BOS | 基于SSH框架的BOS物流管理系统,eclipsemavensvnpowerdesigner | Object-Relational Mapping library
kandi X-RAY | BOS Summary
kandi X-RAY | BOS Summary
基于SSH框架的BOS物流管理系统,eclipse+maven+svn+powerdesigner
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
- Simple test to display pinyin input
- Get head by char
- Convert char to piny
- Get head by string
- Login
- Returns MD5 hash of plain text
- Export to Excel format
- Encode download filename
- Imports the geo sheet
- Convert hanyii string to panyi string
- Query based on Hibernate template
- Intercept the action
- Save user
- Find a customer by phone number
- Execute work
- Save notice
- Builds query string
- Get authentication info
- Add to the model
- Edit staff
- Edit password
- Find all customers
- Find all customer
- Method to find all customer with a specific id
- Get authorization info
- Get login
BOS Key Features
BOS Examples and Code Snippets
Community Discussions
Trending Discussions on BOS
QUESTION
I am trying to delete rows where the same value occurs in both columns C and D on the same row
I am comparing between column C(BOS address 1) and D (Empower address 1)so if they have the same string remove the whole row. The code is below it executes normally but give Object 424 error after it runs.
...ANSWER
Answered 2021-Jun-10 at 02:29since you are trying to delete rows where the same value occurs in both columns C
and D
on the same row, you only need one loop.
QUESTION
I'm doing my student project and building a testing tool for regression testing.
Main idea: capture all constructors/methods/functions invocations using AOP during runtime and record all data into a database. Later retrieve the data, run constructors/methods/functions in the same order, and compare return values.
ProblemI'm trying to serialize objects (and arrays of objects) into a byte array, record it into PostgreSQL as a blob, and later (in another runtime) retrieve that blob and deserialize it back to object. But when I deserialize data in another runtime it changes and, for example, instead of boolean
, I retrieve int
. If I do exactly the same operations in the same runtime (serialize - insert into the database - SELECT from the database - deserialize) everything seems to work correctly.
Here is how I record data:
...ANSWER
Answered 2021-Jun-07 at 12:32An explosion of errors and misguided ideas inherent in this question:
Your read and write code is broken.available()
doesn't work. Well, it does what the javadoc says it does, and if you read the javadoc, and read it very carefully, you should come to the correct conclusion that what that is, is utterly useless. If you ever call available()
, you've messed up. You're doing so here. More generally your read and write code doesn't work. For example, .read(byteArr)
also doesn't do what you think it does. See below.
You can't 'save the state' of arbitrary objects, and if you want to push the idea, then if you can, then certainly not in the way you're doing it, and in general this is advanced java that involves hacking the JDK itself to get at it: Think of an InputStream that represents data flowing over a network connection. What do you imagine the 'serialization' of this InputStream object should look like? If you consider serialization as 'just represent the underlying data in memory', then what you'd get is a number that represents the OS 'pipe handle', and possibly some IP, port, and sequence numbers. This is a tiny amount of data, and all this data is completely useless - it doesn't say anything meaningful about that connection and this data cannot be used to reconstitute it, at all. Even within the 'scope' of a single session (i.e. where you serialize, and then deserialize almost immediately afterwards), as networks are a stream and once you grab a byte (or send a byte), it's gone. The only useful, especially for the notion of 'lets replay everything that happened as a test', serialization strategy involves actually 'recording' all the bytes that were picked up, as it happens, on the fly. This is not a thing that you can do as a 'moment in time' concept, it's continuous. You need a system that is recording all the things (it needs to be recording every inputstream, every outputstream, every time System.currentTimeMillis()
in invoked, every time a random number is generated, etc), and then needs to use the results of recording it all when your API is asked to 'save' an arbitrary state.
Serialization instead is a thing that objects need to opt into, and where they may have to write custom code to properly deal with it. Not all objects can even be serialized (an InputStream representing a network pipe, as above, is one example of an object that cannot be serialized), and for some, serializing them requires some fancy footwork, and the only hope you have is that the authors of the code that powers this object put in that effort. If they didn't, there is nothing you can do.
The serialization framework of java awkwardly captures both of these notions. It does mean that your code, even if you fix the bugs in it, will fail on most objects that can exist in a JVM. Your testing tool can only be used to test the most simplistic code.
If you're okay with that, read on. But if not, you need to completely rethink what you're going to do with this.
ObjectOutputStream sucksThis is not just my opinion, the openjdk team itself is broadly in agreement (they probably wouldn't quite put it like that, of course). The data emitted by OOS is a weird, inefficient, and underspecced binary blob. You can't analyse this data in any feasible way other than spending a few years reverse engineering the protocol, or just deserializing it (which requires having all the classes, and a JVM - this can be an acceptable burden, depends on your use case).
Contrast to e.g. Jackson which serializes data into JSON, which you can parse with your eyeballs, or in any language, and even without the relevant class files. You can construct 'serialized JSON' yourself without the benefit of first having an object (for testing purposes this sounds like a good idea, no? You need to test this testing framework too!).
How do I fix this code?If you understand all the caveats above and somehow still conclude that this project, as written and continuing to use the ObjectOutputStream API is still what you want to do (I really, really doubt that's the right call):
Use the newer APIs. available()
does not return the size of that blob. read(someByteArray)
is not guaranteed to fill the entire byte array. Just read the javadoc, it spells it out.
There is no way to determine the size of an inputstream by asking that inputstream. You may be able to ask the DB itself (usually, LENGTH(theBlobColumn)
works great in a SELECT query.
If you somehow (e.g. using LENGTH(tbc)) know the full size, you can use InputStream's readFully
method, which will actually read all bytes, vs. read
, which reads at least 1, but is not guaranteed to read all of it. The idea is: It'll read the smallest chunk that is available. Imagine a network pipe where bytes are dribbling into the network card's buffer, one byte a second. If so far 250 bytes have dribbled in and you call .read(some500SizeByteArr)
, then you get 250 bytes (250 of the 500 bytes are filled in, and 250
is returned). If you call .readFully(some500SizeByteArr)
, then the code will wait about 250 seconds, and then returns 500, and fills in all 500 bytes. That's the difference, and that explains why read
works the way it does. Said differently: If you do not check what read()
is returning, your code is definitely broken.
If you do not know how much data there is, your only option involves a while
loop, or to call a helper method that does that. You need to make a temporary byte array, then in a loop keep calling read until it returns -1. For every loop, take the bytes in that array from 0 to (whatever the read
call returned), and send these bytes someplace else. For example, a ByteArrayOutputStream
.
when I deserialize data in another runtime it changes and, for example, instead of boolean, I retrieve int
The java serialization system isn't magically changing your stuff on you. Well, put a pin that. Most likely the class file available in the first run (where you saved the blob in the db) was different vs what it looked like in your second run. Voila, problem.
More generally this is a problem in serialization. If you serialize, say, class Person {Date dob; String name;}
, and then in a later version of the software you realize that using a j.u.Date
to store a date of birth is a very silly idea, as Date is an unfortunately named class (it represents an instant in time and not a date at all), so you replace it with a LocalDate
instead, thus ending up with class Person{LocalDate dob; String name;}
, then how do you deal with the problem that you now want to deserialize a BLOB that was made back when the Person.class
file still had the broken Date dob;
field?
The answer is: You can't. Java's baked in serialization mechanism will flat out throw an exception here, it will not try to do this. This is the serialVersionUID
system: Classes have an ID and changing anything about them (such as that field) changes this ID; the ID is stored in the serialized data. If the IDs don't match, deserialization cannot be done. You can force the ID (make a field called serialVersionUID
- you can search the web for how to do that), but then you'd still get an error, java's deserializer will attempt to deserialize a Date object into a LocalDate dob;
field and will of course fail.
Classes can write their own code to solve this problem. This is non-trivial and is irrelevant to you, as you're building a framework and presumably can't pop in and write code for your testing framework's userbase's custom class files.
I told you to put a pin in 'the serialization mechanism isnt going to magically change types on you'. Put in sufficient effort with overriding serialVersionUID and such and you can end up there. But that'd be because you wrote code that confuses types, e.g. in your readObject
implementation (again, search the web for java's serialization mechanism, readObject/writeObject - or just start reading the javadoc of java.io.Serializable
, that's a good starting-off point).
You create objects for no purpose, you seem to have some trouble with the distinction between a variable/reference and an object. You aren't using try-with-resources. The way your SELECT calls are made suggests you have an SQL injection security issue. e.printStackTrace()
as line line in a catch block is always incorrect.
QUESTION
i would like not to download the BufferedOutputStream
when return java method.
my code:
...ANSWER
Answered 2021-Jun-07 at 02:39Once you have started generating and writing the ZIP to the response output stream, there is no turning back. Just opening the stream causes the response to "commit" ... meaning that you can no longer change the response code or headers.
Basically, you need to check if there are any invoices before you start generating the response. Then it should just be a matter of reorganizing the existing code.
Something like .....
QUESTION
I am working with a dataset that contains data for 30 NBA teams and a statistic that has been calculated for each game played in the 2014-2015 season. Here is a small sample of my data:
...ANSWER
Answered 2021-Jun-03 at 06:38Here is one potential solution using the tidyverse:
QUESTION
I would like to plot a horizontal barchart using data that I have selected.
...ANSWER
Answered 2021-May-30 at 21:18To plot the simple barplot
use.
QUESTION
I'm working through the exercises on Learn Prolog Now! and I'm stumped on the very last question. Given the following facts:
...ANSWER
Answered 2021-May-29 at 03:43Your are not changing G
appropriately in the travel/3
predicate.
QUESTION
I am new to R and working on baseball data from retrosheet. I am trying to download multiple files from my directory. For example, this ll object contains two names of TXT file "GL2001.TXT" and "GL2002.TXT". This is the script. This worked on my console.
...ANSWER
Answered 2021-May-21 at 12:40This is because you are using dplyr
and plyr
packages simultaneously.
summarize
function is masked from dplyr
by plyr
package.
Try this:
QUESTION
There is a service that receives an xml file in base64.
For example this :
PGFkcmVzc2Jvb2s+CiA8Y29udGFjdCBudW1iZXI9IjEiPgogIDxuYW1lPlBpZ2d5PC9uYW1lPgogIDxwaG9uZT4rNDkgNjMxMzIyMTg3PC9waG9uZT4KICA8ZW1haWw+cGlnZ3lAbWVnYS5kZTwvZW1haWw+CiA8L2NvbnRhY3Q+CiA8Y29udGFjdCBudW1iZXI9IjIiPgogIDxuYW1lPktlcm1pdDwvbmFtZT4KICA8cGhvbmU+KzQ5IDYzMTMyMjE4MTwvcGhvbmU+CiAgPGVtYWlsPmtlcm1pdEBtZWdhLmRlPC9lbWFpbD4KIDwvY29udGFjdD4KIDxjb250YWN0IG51bWJlcj0iMyI+CiAgPG5hbWU+R29uem88L25hbWU+CiAgPHBob25lPis0OSA2MzEzMjIxODY8L3Bob25lPgogIDxlbWFpbD5nb256b0BtZWdhLmRlPC9lbWFpbD4KIDwvY29udGFjdD4KPC9hZHJlc3Nib29rPg==
From it I get an object of type org.w3c.dom.document.
...ANSWER
Answered 2021-May-15 at 13:35The difference is that the original string (A) had linebreaks coded as LF (ASCII 0a) but the result (B) has them as CR LF (ASCII 0d 0a)
You can see this easily when you convert the base64 string to HEX
A: 3c616472657373626f6f6b3e0a203c636f6e
B: 3c616472657373626f6f6b3e0d0a203c636f
Looks like the transformer doesn't offer an option for the linebreaks.
QUESTION
I'm performing an analysis on basketball data. This is how my dataset looks like (a really exemplified version of it):
...ANSWER
Answered 2021-May-05 at 07:13Do you want this? (mean_run
from library(runner)
used).
- You can automate this process for as many variables you want. Just use their names in
.cols
argument ofmutate(across...
- To change rolling window size just change
k
inmean_run
as per choice.
QUESTION
Any idea why Java's GZIPOutputStream compressed string is different from my .NET's GZIP compressed string?
Java Code:
...ANSWER
Answered 2021-May-06 at 16:21To add to @MarcGravell's answer about differences in GZip encoding, it's worth noting that it looks like you've got an endianness issue with your header bytes, which will be messing up a decoder.
Your header is 4 bytes, which encodes to 5 1/3 base64 characters. The .NET version outputs bAAAAB (the first 4 bytes of which are 6c 00 00 00
), whereas the Java version outputs AAAAbB (the first 4 bytes of which are 00 00 00 6c
). The fact that the b
is moving by around 5 characters among a sea of A's is your first clue (A
represents 000000
in base64), but decoding it makes the issue obvious.
.NET's BitConverter
uses your machine architecture's endianness, which on x86 is little-endian (check BitConverter.IsLittleEndian
). Java's ByteBuffer
defaults to big-endian, but is configurable. This explains why one is writing little-endian, and the other big-endian.
You'll want to decide on an endianness, and then align both sides. You can change the ByteBuffer to use little-endian by calling .order(ByteBuffer.LITTLE_ENDIAN)
. In .NET, you can use BinaryPrimitives.WriteInt32BigEndian
/ BinaryPrimitives.WriteInt32LittleEndian
to write with an explicit endianness if you're using .NET Core 2.1+, or use IPAddress.HostToNetworkOrder
to switch endianness if necessary (depending on BitConverter.IsLittleEndian
) if you're stuck on something earlier.
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install BOS
You can use BOS like any standard Java library. Please include the the jar files in your classpath. You can also use any IDE and you can run and debug the BOS component as you would do with any other Java program. Best practice is to use a build tool that supports dependency management such as Maven or Gradle. For Maven installation, please refer maven.apache.org. For Gradle installation, please refer gradle.org .
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page