Java动态代理的invoke方法返回值如何够自己定义? 5C

Java动态代理的invoke方法返回值,想根据不同的接口调用标识加载不同的xml获取相应的bean属性,设置对应的值返回。

1个回答

那你原方法为什么会有返回值?
比如你原方法要返回一个信息,难道代理之后这个返回信息就不需要了吗?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java 动态代理报 空指针异常

在学习动态代理时 遇到一个莫名奇妙的异常 还望各位大佬能提点一下。。代码如下: 接口: public interface UserService { public int saveUser(String dosth); } 委托类: public class UserServiceImpl implements UserService { @Override public int saveUser(String dosth) { System.out.println(dosth); return 1; } } 测试main方法: public static void main(String[] args) { UserService us = new UserServiceImpl(); UserService usp = (UserService) Proxy.newProxyInstance(us.getClass().getClassLoader(), us.getClass().getInterfaces(),new InvocationHandler() { @Override public Object **invoke**(Object proxy, Method method, Object[] args) throws Throwable { // System.out.println("before..."); **Object obj = method.invoke(us, args);** System.out.println(obj); System.out.println("after..."); **return obj;** } }); System.out.println(usp.saveUser("租房子")); } 此时代码没什么问题: 运行结果: before... 租房子 1 after... 1 可是我把 invoke 方法里的 return obj 改为 return null 时 测试时会报空指针异常: 运行结果如下: before... 租房子 1 after... Exception in thread "main" java.lang.NullPointerException at com.sun.proxy.$Proxy0.saveUser(Unknown Source) at dynamicProxy.impl.dynamicProxy.main(dynamicProxy.java:27) 不是很理解 为什么感觉是 invoke 方法被执行了以后 还报我的代理对象空指针??搞了半天了~~~

java怎么在另外一个类里面调用一个无返回值方法里面的局部变量呢?

在mqtt订阅代码里面,我想将订阅的消息里面的部分内容提取出来作为另外一个方法里的变量。但是mqtt的messagearrived方法默认是无返回值的,所以想知道该怎么调用一个无返回值方法的局部变量。 public static void subscribe() { try { MqttClient client = new MqttClient(serviceURI, clientID, persistence); client.setCallback(new MqttCallback() { @Override public void connectionLost(Throwable cause) { System.out.println("订阅者连接丢失..."); System.out.println(cause.getMessage()); } @Override public void messageArrived(String topic, MqttMessage message) { String mes =message.toString(); String rssi = mes.substring(mes.indexOf("rssi")+7,mes.indexOf("ibeaconTxPower")-2); int abc = Integer.parseInt(rssi); System.out.println("第一个网关的RSSI值: "+Integer.parseInt(rssi)); } @Override public void deliveryComplete(IMqttDeliveryToken token) { } }); MqttConnectOptions connectOptions = new MqttConnectOptions(); connectOptions.setUserName(username); connectOptions.setPassword(password.toCharArray()); connectOptions.setCleanSession(false); //订阅者连接订阅主题 client.connect(connectOptions); client.subscribe(topic, qos); System.out.println("订阅者连接状态: " + client.isConnected()); } catch (MqttException e) { e.printStackTrace(); } } 想要获取messagearrived里的rssi,调用到另外一个类里面

java中调用一个类方法如何得到他的返回值。

**新手代码写的比较乱大佬们见谅,恳请大佬帮看一下,万分感谢** ``` @RequestMapping("/adg") public ModelAndView adg(Img img) { ModelAndView mv = new ModelAndView(); String imgName = img.getImgName(); System.out.println(imgName); mv.addObject("keyword", imgName); AdvancedGeneral adv = new AdvancedGeneral(); adv.advancedGeneral(imgName); mv.setViewName("login"); //mv.addObject("kwd", kwd); return mv; } ``` 1. 上面是第一个代码,imgName 是从前端输入框获取的值然后把它传到AdvancedGeneral类中advancedGeneral()方法中。 1. 然后下面是AdvancedGeneral类的代码。 1. 我想获取到kwd这个值再返回到前端页面去 应该如何实现。。。前段是用的jsp ``` public class AdvancedGeneral { /** * 重要提示代码中所需工具类 * FileUtil,Base64Util,HttpUtil,GsonUtils请从 * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72 * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2 * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3 * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3 * 下载 */ public static String advancedGeneral(String imgName) { // 请求url String url = "https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general"; try { // 本地文件路径 System.out.println(imgName); String filePath = "C:\\Users\\Administrator\\Desktop\\photo\\"+imgName+".jpg"; byte[] imgData = FileUtil.readFileByBytes(filePath); String imgStr = Base64Util.encode(imgData); String imgParam = URLEncoder.encode(imgStr, "UTF-8"); String param = "image=" + imgParam; // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。 String accessToken = "24.261799bd470fb0f8bbd5e1c86b5b0282.2592000.1589199374.282335-19377424"; String result = HttpUtil.post(url, accessToken, param); //System.out.println(result); // 用阿里 fastjson 解析器 解析json JSONObject jsonObject = JSON.parseObject(result); // 得到 result_num 的值 Integer resultNum = jsonObject.getInteger("result_num"); // System.out.println(resultNum); // 得到result集合 JSONArray jsa = jsonObject.getJSONArray("result"); List<Map<String, Object>> list =(List)jsa; String kwd = (String) list.get(0).get("keyword"); System.out.println(kwd); UserController uc = new UserController(); return kwd; } catch (Exception e) { e.printStackTrace(); } return null; } ```

java方法内调用方法,参数传递对象是否线程安全

按自己的理解,线程执行,其中基本数据类型是放置于stack中,但引用堆中对象,当在方法中调用其他方法参数为对象时,是否每个对象针对线程唯一,是否线程安全,求赐教

"main" java.lang.NullPointerException

//四、用Java实现掷骰子游戏:丢下两个骰子,若分值的总值为7点,则赢;否则输。 //编写步骤如下: //(1)首先定义Dice类。 //提示:Dice类表示一个骰子有faceValue一个属性,为整型; //有一个roll()方法和getFaceValue()。 //roll()方法功能使faceValue属性设置为1~6中的一个随机值,没有返回值。 //getFaceValue()方法功能为取出faceValue值。 //Math.random()方法是求随机数,返回值为double类型,值的范围为0.0~1.0 //(2)然后定义DiceGame类。 //提示:DiceGame类有dice1、dice2两个属性,类型分别为Dice类类型,有一个play()方法。 //play()方法返回一个布尔类型,true表示丢下两个骰子分值的总值为7点,否则为false。 //(3)最后编写一个测试类Test,对上面定义的类进行测试。 //提示: main()方法中产生DiceGame对象,执行play()方法后显示出输赢。 class Dice{ private int faceValue; public void roll(){ faceValue=(int)(6*Math.random()); } public int getFaceValue(){ return faceValue; } } class DiceGame extends Dice{ private Dice dice1; private Dice dice2; public boolean play(){ dice1.roll(); dice2.roll(); if(dice1.getFaceValue()+dice2.getFaceValue()==7){ System.out.println("赢了!"); return true; } else { System.out.println("输了!"); return false; } } } public class Test{ public static void main(String[] args){ DiceGame one=new DiceGame(); one.play(); } } 请问大神错在哪? 错在27和42行

axis调用webservice:返回值不正确

本人对webservice的调用不熟悉,求助各位大侠!多谢! WSDL的XML文件中定义的参数如下 name="zone" type="xsd:string" default="CM-ACCTSPID" name="Id" type="xsd:string" name="rowCount" type="xsd:decimal" name="accountId" type="xsd:string" accountID是返回值 我自己写的调用程序是 Service service = new Service(); // 创建一个call对象 Call call = (Call) service.createCall(); // 设置目标地址,即webservice路径 call.setTargetEndpointAddress(endpoint); // 设置操作名称,即方法名称 call.setSOAPActionURI("http://ouaf.oracle.com/spl/XAIXapp/xaiserver/CM-ACCTSPID"); call.setOperationName("CM-ACCTID");// 调用的方法名 call.setUseSOAPAction(true); Object [] c={"CM-ACCTID","5706648717",1,""}; Object a=call.invoke(c); 但是上述打印出a是CM-ACCTID,这不是webservice的正确返回信息。求解答! 用soapUI测试webservice,输入参数CM-ACCTID、5706648717、1,就有输出参数 0614668080。

map 返回值为空 不知道为啥

//查询表中的所有的数据 @Action(value="user",results={@Result(name="succes", location="/WEB-INF/jsp/user.jsp")}) public String userall(){ Session session = sessionFactory.openSession(); Query<UserEntity> query=session.createQuery("from user"); List<UserEntity> userlist=query.list(); for (UserEntity userEntity : userlist) { listuser.add(userEntity); } session.close(); return "succes"; } @Action(value="json") public Map<String, Object> json(){ HttpServletResponse response = ServletActionContext.getResponse(); map=new HashMap<String, Object>(); int total=listuser.size(); map.put("total",total); map.put("rows", listuser); String data = JSON.toJSONString(map); try { response.setCharacterEncoding("UTF-8"); PrintWriter out; out = response.getWriter(); out.write(data.toString()); System.out.println(data); out.flush(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return map; } ![f12调试后没有值图片说明](https://img-ask.csdn.net/upload/201709/03/1504416375_892008.png) java.lang.ClassCastException: java.util.HashMap cannot be cast to java.lang.String at com.opensymphony.xwork2.DefaultActionInvocation.saveResult(DefaultActionInvocation.java:483) at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:446) at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:284) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245) at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:253) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:177) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:97) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:260) at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:69) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:97) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.doIntercept(ConversionErrorInterceptor.java:139) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:97) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:133) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:97) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:133) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:97) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:192) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:69) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at org.apache.struts2.interceptor.DateTextFieldInterceptor.intercept(DateTextFieldInterceptor.java:121) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:88) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:245) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:99) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:139) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:155) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:174) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:97) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at org.apache.struts2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:151) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:171) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:195) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:193) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at org.apache.struts2.factory.StrutsActionProxy.execute(StrutsActionProxy.java:54) at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:564) at org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:81) at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:113) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)

JAVA cxf 返回数据问题

基本接口知道怎么写,问题在 我想实现 客户端 提交 一句SQL JAVA接口实现 return 整个查询后的数据, 百度上很多 都是 需要 单独建立一个 对象实例类 然后 返回LIST ,但 查询SQL返回 的数据不固定,每个表实例化 不太现实,求解决方案 最好能自由定义返回数据格式,或者自动定义, 还有就是 会话方式 能否使用SESSION 保存状态?

webservice中定义的ref参数 用java怎么调用

接口格式是这样的 int HisTrans(string ParamIn, ref string ParamOut) 我java的写法是: String paramIn = "<HisTrans><TranCode>GetHealthYE</TranCode><DevNo></DevNo><DevSeqNo></DevSeqNo><HealthNo>卡号</HealthNo ></HisTrans>"; String url = "http://ip:668/jjzyy/weixinwebservice.asmx";// 访问的url String namespace = "http://tempuri.org/";// xml文件中的targetNamespace名称 String methodName = "HisTrans";// 要调用的方法名称 String soapActionURI = "http://tempuri.org/HisTrans";// targetNamespace+methodName try { Call call;// 引用org.apache.axis.client.Call; Service service = new Service();// org.apache.axis.client.Service; call = (Call) service.createCall(); call.setTargetEndpointAddress(url); call.setUseSOAPAction(true); call.setSOAPActionURI(soapActionURI); call.setOperationName(new QName(namespace, methodName)); call.addParameter(new QName(namespace, "ParamIn"), org.apache.axis.encoding.XMLType.XSD_STRING, ParameterMode.IN);// byProvinceName传人的参数名称要和wsdl文件的一样,XSD_STRING传人的参数类型 call.addParameter(new QName(namespace, "ParamOut"), org.apache.axis.encoding.XMLType.XSD_STRING, ParameterMode.IN);// byProvinceName传人的参数名称要和wsdl文件的一样,XSD_STRING传人的参数类型 call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);// 返回的参数,根据具体返回值修改 String[] str = new String[2]; str[0] = paramIn;// 第一个参数值 str[1] = "";// 第一个参数值 Object obj = (Object) call.invoke(str); System.out.println("obj + " + obj.toString() + ";" + str[1]); } catch (ServiceException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } 有没有什么方式可以获取到 ParamOut的值(把类型设置成OUT 会报错)

基于AXIS调用webservice报错:Connection refused: connect

我的调用方法: public static void main(String[] args) throws Exception { String client_id = "HeYiApp"; String orderNum = "2"; List numberList = new ArrayList(); numberList.add("120719"); numberList.add("120746"); numberList.add("113095"); String webUrl = "https://10.218.132.26/api/openapi/employee/getBatchEmpInfoList.json";// 服务端url地址 String webMethod = "getBatchEmpInfoList";// 调用方法名称 Service service = new Service(); // 建服务 Call call; try { call = (Call) service.createCall(); try { call.setTargetEndpointAddress(new URL(webUrl)); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); }// 设置访问地址 call.setOperationName(webMethod);// 设置访问方法 call.addParameter("arg0", XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);// 定义参数 call.addParameter("arg1", XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);// 定义参数 call.addParameter("arg2", XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);// 定义参数 call.setReturnType(XMLType.XSD_STRING);// 定义返回值格式 //List<Map<String, Object>> workersInfo= (List<Map<String, Object>>) call.invoke(new Object[] { client_id, numberList, orderNum }); //for(Map m:workersInfo){ // System.out.println(m.get("name")); //} JSONArray jsonObject = (JSONArray) call.invoke(new Object[] { client_id, numberList, orderNum }); System.out.println(jsonObject.toString()); } catch (ServiceException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 建对话 } 报错: Exception in thread "main" AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException faultSubcode: faultString: java.net.ConnectException: Connection refused: connect faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}stackTrace:java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.connect0(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:668) at sun.security.ssl.SSLSocketImpl.&lt;init&gt;(SSLSocketImpl.java:427) at sun.security.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:88) at org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.java:92) at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191) at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404) at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165) at org.apache.axis.client.Call.invokeEngine(Call.java:2784) at org.apache.axis.client.Call.invoke(Call.java:2767) at org.apache.axis.client.Call.invoke(Call.java:2443) at org.apache.axis.client.Call.invoke(Call.java:2366) at org.apache.axis.client.Call.invoke(Call.java:1812) at webservice.Test.main(Test.java:52) {http://xml.apache.org/axis/}hostname:zhangxl java.net.ConnectException: Connection refused: connect at org.apache.axis.AxisFault.makeFault(AxisFault.java:101) at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:154) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165) at org.apache.axis.client.Call.invokeEngine(Call.java:2784) at org.apache.axis.client.Call.invoke(Call.java:2767) at org.apache.axis.client.Call.invoke(Call.java:2443) at org.apache.axis.client.Call.invoke(Call.java:2366) at org.apache.axis.client.Call.invoke(Call.java:1812) at webservice.Test.main(Test.java:52) Caused by: java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.connect0(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:668) at sun.security.ssl.SSLSocketImpl.<init>(SSLSocketImpl.java:427) at sun.security.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:88) at org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.java:92) at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191) at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404) at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138) ... 10 more

CXF动态生成client调用服务端,服务端收到参数为空,请教如何解决?

请教大家一个问题。 java做客户端,c#做服务端。java用apache.cxf的DynamicClientFactory或者JaxWsDynamicClientFactory根据wsdl生成client,调用服务端传递UserSyncData对象,服务端方法收到的参数对象是null,请问大家有解决办法吗?(需求:一定要用动态生成客户端的方式) 传递的对象UserSyncData 是jdk或者用cxf的wsdl2java在本地生成的pojo,服务端接受的参数就是空。如果用代理服务类的方式调用,是可以成功的,可以正常收到参数。但是我的项目要求用动态方式调用,所以来请教大家 java中调用的代码 ![CSDN移动问答][1] .net服务端方法:打断点看到userSyncData为null ![CSDN移动问答][2] [1]: http://c.hiphotos.baidu.com/zhidao/pic/item/adaf2edda3cc7cd95ffea4b53b01213fb90e918f.jpg [2]: http://c.hiphotos.baidu.com/zhidao/pic/item/738b4710b912c8fce13d66a1fe039245d788218b.jpg 我自己分析可能是pojo对象在java和c#中定义要达成某种规范,仅是猜测,也不知道应该怎么做。以前和同时调试hessian的时候,要求java和c#的pojo必须一模一样,包括namespace也必须一样,我按这个方法试了以后也没用。

axis访问sap的webserv多返回值问题

sap的 wsdl文件部分: ================================================== <xsd:schema xmlns:n0="urn:sap-com:document:sap:rfc:functions" attributeFormDefault="qualified" targetNamespace="urn:sap-com:document:sap:soap:functions:mc-style"> <xsd:import namespace="urn:sap-com:document:sap:rfc:functions"/> <xsd:element name="Zmminterface"> <xsd:complexType> <xsd:sequence> <xsd:element name="Iheads" type="n0:string" minOccurs="0"/> <xsd:element name="Iitems" type="n0:string" minOccurs="0"/> <xsd:element name="Intid" type="n0:char20"/> <xsd:element name="Iselec" type="n0:string" minOccurs="0"/> <xsd:element name="Paras" type="n0:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="ZmminterfaceResponse"> <xsd:complexType> <xsd:sequence> <xsd:element name="Eheads" type="n0:string"/> <xsd:element name="Eitems" type="n0:string"/> <xsd:element name="Emess" type="n0:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="Zmminterface"> <wsdl:part name="parameters" element="tns:Zmminterface"/> </wsdl:message> <wsdl:message name="ZmminterfaceResponse"> <wsdl:part name="parameter" element="tns:ZmminterfaceResponse"/> </wsdl:message> ========================================= 我的java代码: public static void main(String args[]) { String wsdlURISap = ""; String namespaceURI = ""; String operationName = ""; String serviceLocalPart = ""; // String portName = ""; // try{ wsdlURISap = "http://192.168.108.106:8001/sap/bc/srt/wsdl/flv_10002A111AD1/bndg_url/sap/bc/srt/rfc/sap/zmminterface/300/mmservices/binding?sap-client=300?wsdl"; namespaceURI = "urn:sap-com:document:sap:soap:functions:mc-style";// operationName = "Zmminterface";// serviceLocalPart = "mmservices" ;// portName = "binding" ;// //5个参数测试值 String Iheads ="1"; String Iitems="2"; String Intid = "3"; String Iselec = "4"; String Paras ="5"; Object[] arg0 = new Object[] { Iheads, Iitems,Intid, Iselec , Paras }; Parser wsdlParser = new Parser(); //这里用户名密码设置有用 ,比如不设置会把url无效 wsdlParser.setUsername("sapuser"); wsdlParser.setPassword("123321"); wsdlParser.run(wsdlURISap); // 名命空间,服务名 QName qName = new QName(namespaceURI, serviceLocalPart); Service clientService = new Service(wsdlParser, qName); javax.xml.rpc.Call call = clientService.createCall( QName.valueOf(portName), QName.valueOf(operationName)); // http 方式认证用户名和密码 ((org.apache.axis.client.Call) call).getMessageContext().setUsername("sapuser"); // httpbase认证用户名 ((org.apache.axis.client.Call) call).getMessageContext().setPassword("123321"); ((org.apache.axis.client.Call) call).setTimeout(new Integer(30 * 1000)); //调用sap String result = (String) call.invoke(arg0); System.out.println(result); } catch(Exception e ){ System.out.println("clientSAP方法返回值 *****"+e.toString() ); } } ========================================== 异常: [ERROR] Exception: org.xml.sax.SAXException: Deserializing parameter 'Eheads': could not find deserializer for type {urn:sap-com:document:sap:rfc:functions}string at org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:277) at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035) at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165) at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141) at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:236) at org.apache.axis.message.RPCElement.getParams(RPCElement.java:384) at org.apache.axis.client.Call.invoke(Call.java:2467) at org.apache.axis.client.Call.invoke(Call.java:2366) at org.apache.axis.client.Call.invoke(Call.java:1812) at com.infor.webService.client.SapWebServiceClinet.main(SapWebServiceClinet.java:60) ========================== 问题像是:三个字符型的返回值, 我要怎么 定义接收 ?

springboot使用spybean单元测试时,若被spy的类中有transactional注解会出现NotAMockException

在springboot中使用spybean单元测试时,发现在被spy的类中,若加入了Transactional注解后,在测试类中定义被spy类的某个方法的返回值时,会抛出NotAMockException. org.mockito.exceptions.misusing.NotAMockException: Argument passed to when() is not a mock! Example of correct stubbing: doThrow(new RuntimeException()).when(mock).someMethod(); at com.xxx.xxx.xxxx.service.impl.SubCustomerServiceImplTest.should_have_xxx_rights_when_maximum_rc_greater_than_0(SubCustomerServiceImplTest.java:222) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:73) at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:83) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86) at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 请问有朋友知道如何解决吗?

匿名类中如何传值出来呢?

先来看代码: [code="java"]@Controller public class T1 implements MethodInterceptor { private Object obj; @Autowired private SimpleAsyncTaskExecutor task; public Object invoke(final MethodInvocation mi) throws Throwable { task.execute(new Runnable(){ public void run() { try { obj = mi.proceed(); // 这里我需要把执行的结果传入到T1类,我定义了一个Object对象,可是值是传不出来的 } catch (Throwable e) { e.printStackTrace(); } } }); return obj; // 刚才传的值这里要用 } }[/code] MethodInterceptor是我实现了spring中一个接口,关于aop的。 SimpleAsyncTaskExecutor是spring中的一个类,用于实现对并发的总数做限制的。 上面我写的有注释,内部类执行的值怎么才能传出来给T1类使用呢? [b]问题补充:[/b] @RednaxelaFX,非常感谢,按照你的方法,问题解决了: [code="java"]@Controller public class T1 implements MethodInterceptor { @Autowired private SimpleAsyncTaskExecutor executor; public Object invoke(final MethodInvocation mi) throws Throwable { FutureTask<Object> task = new FutureTask<Object>(new Callable<Object>() { public Object call() { try { return mi.proceed(); } catch (Throwable e) { return null; } } }); executor.execute(task); return task.get(); } }[/code]

一个关于Spring AOP的问题

先说一下情况:小弟现正用Spring AOP实现日志记录功能,上面交待Web层,Service层,Dao层都要记录,所以打算在Web层只记一下用户请求的情况,也就是说用户请求哪个Action时,记录一下操作步骤,Service层记录方法调用时的参数及返回值以及异常情况,Dao层上面交待要记录最终SQL(这个小弟现在还不知道怎么实现)。 在此只说一下Web层的日志记录,其它的略过了。我是这样的,先定义一个名为ActionName的annotation,有一个value属性,这个value属性的值就表示该Action方法的功能说明。然后我定义一个Pointcut匹配该annotation。到这里一切都没问题,能正常拦截并代理Action方法,但是前提是必须使用CGLIB! 我记得好像Spring能自动地判断目标方法并决定是使用动态代理还是CGLIB代理实现的。但是我在配置文件中如果不强制使用CGLIB代理则程序运行报错呢? 下面是我的代码: LogHandler类 package com.delver.bms.log.util; import java.lang.reflect.Method; import java.sql.Timestamp; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import com.delver.bms.exception.BusinessException; import com.delver.bms.log.annotation.ActionName; import com.delver.bms.log.annotation.TaskScheduling; import com.delver.bms.log.dao.IAppLogDao; import com.delver.bms.log.to.AppLog; import com.delver.bms.util.AutoID32; import com.delver.bms.util.TenantUtil; import com.ibm.crl.mmt.datamodel.MTUtilFactory; import com.ibm.crl.mmt.exception.MTException; /** * 日志记录切面类 * * @author yue.ch * */ @Aspect public class LogHandler { private IAppLogDao appLogDao; public void setAppLogDao(IAppLogDao appLogDao) { this.appLogDao = appLogDao; } /** * 定义切入点,匹配使用@ActionName注解的方法 * @param actionName @ActionName注解value值(功能解释) */ @Pointcut("@annotation(actionName)") public void annotationMethod(ActionName actionName) { } /** * 定义切入点,匹配使用@TaskScheduling注解的方法 * @param taskScheduling @TashScheduling注解value值(功能解释) */ @Pointcut("@annotation(taskScheduling)") public void annotationTaskMethod(TaskScheduling taskScheduling) { } /** * 定义切入点,匹配Service层方法 */ @Pointcut("execution(* com.delver.bms.*.service.*.*(..))") public void serviceMethod() { } /** * 定义切入点,排除UserDetailsServiceImpl类 */ @Pointcut("!within(com.delver.bms.identity.service.UserDetailsServiceImpl)") public void identityServiceMethod(){} /** * 定义切入点,排除日志记录功能模块的Service层方法 */ @Pointcut("!execution(* com.delver.bms.log.service.*.*(..))") public void logServiceMethod(){} /** * 定义切入点,排除日志记录功能模块的Dao层方法 */ @Pointcut("!execution(* com.delver.bms.log.dao.*.*(..))") public void logDaoMethod(){} /** * 定义切入点,匹配Dao层方法 */ @Pointcut("execution(* com.delver.bms.*.dao.*.*(..))") public void daoMethod(){} /** * 系统任务调度方法前置通知(记录任务调度方法功能说明及执行) * * @param joinPoint * @param taskScheduling */ @Around("annotationTaskMethod(taskScheduling)") public void aroundTaskScheduling(ProceedingJoinPoint joinPoint, TaskScheduling taskScheduling) throws Throwable { System.out.println("ddd"); } /** * Action方法前置通知(记录Action方法功能说明) * * @param joinPoint * @param actionName */ @Before("annotationMethod(actionName)") public void beforeActionLog(JoinPoint joinPoint, ActionName actionName) { System.out.println("ddd"); } /** * Service方法环绕通知 * * @param joinPoint * @return */ @Around("serviceMethod() && identityServiceMethod() && logServiceMethod()") public Object aroundServiceLog(ProceedingJoinPoint joinPoint) throws Throwable { System.out.println("ddd"); } /** * Dao方法环绕通知(记录SQL) * * @param jointPoint * @return */ @Around("daoMethod() && logDaoMethod()") public Object aroundDaoLog(ProceedingJoinPoint joinPoint) throws Throwable { System.out.println("ddd"); } 配置文件: <?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"> <aop:aspectj-autoproxy proxy-target-class="true"/> <bean id="appLogDao" class="com.delver.bms.log.dao.AppLogDaoiBatis"> <property name="sqlMapClient" ref="sqlMapClient" /> </bean> <bean id="appLogManager" class="com.delver.bms.log.service.AppLogManagerImpl"> <property name="appLogDao" ref="appLogDao" /> </bean> <bean id="appLogInfo" class="com.delver.bms.log.web.AppLogInfo" scope="prototype"> <property name="appLogManager" ref="appLogManager" /> <property name="tenantManager" ref="tenantManager" /> </bean> <!-- 系统日志处理类 --> <bean id="appLogHandler" class="com.delver.bms.log.util.LogHandler"> <property name="appLogDao" ref="appLogDao" /> </bean> </beans> 异常信息: java.lang.NoSuchMethodException: $Proxy51.visit() at java.lang.Class.getMethod(Unknown Source) at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.getActionMethod(AnnotationValidationInterceptor.java:55) at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:41) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123) 下面略。。。 [b]问题补充:[/b] 我希望的是Service层,Dao层用动态代理,web层用CGLIB代理,是不是不能实现?我试过配多个<aop:config>,但是只要其中有一个配置了proxy-target-class="true",就全都用CGLIB实现了,网上搜了下,貌似确实是这样的。还有,CGLIB代理与动态代理在运行期性能上有区别吗?

从webservice获取成功的xml如何转成对象

如,webservice定义return System.Data.DataTable对象, 在浏览器端获取到xmlhttp对象,//xmlhttp = new ActiveXObject("Microsoft.XMLHTTP") 接收到 xmlhttp.responseText 为 ----------------- <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <GetDt2Response xmlns="http://tempuri.org/"> <GetDt2Result> <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="rr1" msdata:UseCurrentLocale="true"> <xs:complexType><xs:choice minOccurs="0" maxOccurs="unbounded"><xs:element name="rr1"><xs:complexType><xs:sequence> <xs:element name="sdfs1" type="xs:string" minOccurs="0" /><xs:element name="sdfs2" type="xs:string" minOccurs="0" /> </xs:sequence></xs:complexType></xs:element></xs:choice></xs:complexType></xs:element></xs:schema> <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> <DocumentElement xmlns=""> <rr1 diffgr:id="rr11" msdata:rowOrder="0" diffgr:hasChanges="inserted"> <sdfs1>b1</sdfs1><sdfs2>45 2</sdfs2></rr1> <rr1 diffgr:id="rr12" msdata:rowOrder="1" diffgr:hasChanges="inserted"><sdfs1>b2</sdfs1> <sdfs2>60 name22</sdfs2></rr1> </DocumentElement> </diffgr:diffgram> </GetDt2Result> </GetDt2Response> </soap:Body> </soap:Envelope> ---------------- 说明返回结果为,函数为 GetDt2 的 DataTable对象,有两行(b1,b2) 两列(sdfs1,sdfs2) 表名为rr1, 但它在浏览器端以xml形式展示,或者 xmlhttp.responseText 或者 xmlhttp.responseXML 或者xmlhttp对象,,问题就是,怎么才能将 webservice返回的xml转成对象, ps: 记得ajax的返回结果是可以直接变成对象的, 而webservice允许 WebMethod 定义为返回对象类型,却在端获取只能是xml,还是说开放的接口有限制,要自己写转换函数??

int com_fd = newPort.openPort(uart, 0, (char) longUart);这段代码错在哪里?

package com.example.newland.serialport; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import com.newland.jni.Convert; import com.newland.jni.SerialPort;//串口类 import com.newland.jni.OnDataReceivedListener;//数据接收监听口 import android.view.View; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.EditText; import android.widget.Spinner; import android.widget.ArrayAdapter; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private String strReceiveData="";//串口接收的数据 private Spinner spBaudRate,spUart; private EditText etAck,etSend; private TextView tvUartStatus; private CheckBox chkSendHex,chkAckHex; SerialPort newPort=new SerialPort();//定义一个串口 private int[] sectCom={0,1,2,3}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initComponent();//初始化控件 initSpinnerBaudRate();//初始化下拉框的值 //PC机发送数据是不定时的,故采用响应模式来接收数据 newPort.setCommReceivedMode(true);//设置串口通讯为响应模式 //设置数据接收的监听器 newPort.setOnDataReceivedListener(new OnDataReceivedListener() { public void onDataReceived(String data) { handleReceivedData(data);//处理接受的数据 } }); } /**************************************** * 函数名称:initComponent * 功能描述:初始化界面 * 参数及返回值说明: * ****************************************/ private void initComponent(){ //初始化控件 tvUartStatus=(TextView)findViewById(R.id.tvUartStatus); etAck=(EditText) findViewById(R.id.etAck); etSend=(EditText)findViewById(R.id.etSend); spBaudRate=(Spinner)findViewById(R.id.spBaudRate); spUart=(Spinner)findViewById(R.id.spUart); chkSendHex=(CheckBox)findViewById(R.id.chkSendHex); chkAckHex=(CheckBox)findViewById(R.id.chkAckHex); chkSendHex.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { String str=etSend.getText().toString(); try { if (isChecked) { etSend.setText(Convert.stringToHexString(str)); } else { etSend.setText(Convert.hexStringToString(str)); } }catch (Exception e){ } } }); //增加事件监听,实现字符串与十六进制互转 chkAckHex.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { String str=etAck.getText().toString(); try { if (isChecked) { etAck.setText(Convert.stringToHexString(str)); } else { etAck.setText(Convert.hexStringToString(str)); } }catch (Exception e){ //TODO:handle exception } } }); } /******* * 函数名称:initSpinnerBaudRate * 功能描述:初始化波特率的值 * 参数及返回值说明:* *******/ private void initSpinnerBaudRate(){ //下拉波特率的值 String[] items={"1200","B2400","B4800","9600","19200","38400","57600","115200","230400","921600"}; //第一步:为下拉列表定义一个适配器,这里就用到里前面定义的items。 final ArrayAdapter<String>adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,items); //第二步:为适配器配置下拉列表下拉时的菜单样式。 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //第三步:将适配器添加到下拉列表上 spBaudRate.setAdapter(adapter); //默认选择第6项--57600 spBaudRate.setSelection(6); //下拉串口的值 String[] uarts={"COM0","COM1","COM2","COM3"}; final ArrayAdapter<String>adapterUart=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,uarts); adapterUart.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spUart.setAdapter(adapterUart); spUart.setSelection(2);//默认选择第二项--COM2 } /******* * 函数名称:myClick * 功能描述:按钮监听 * 参数及返回值说明 *******/ public void myClick(View v) { switch(v.getId()) { //打开串口 case R.id.btnOpenUart: long longUart = spUart.getSelectedItemId(); int uart = sectCom[(int) longUart]; longUart = spBaudRate.getSelectedItemId(); int com_fd = newPort.openPort(uart, 0, (char) longUart); if (com_fd > 0) { tvUartStatus.setText("打开成功!..."); } else { tvUartStatus.setText("打开失败!...");} break; //关闭串口 case R.id.btnCloseUart: newPort.closePort(); tvUartStatus.setText("已关闭!..."); break; //发送 case R.id.btnSend: String msg = etSend.getText().toString(); if (chkSendHex.isChecked()) {//以十六进制数发送 newPort.sendCommand(Convert.hexStringToCharArray(msg)); } else {//以字符串发送 newPort.sendCommand(Convert.stringToCharArray(msg)); } break; //清除按钮 case R.id.btnClear: etAck.setText(""); strReceiveData = ""; break; //退出 case R.id.btnQuit: System.exit(0); default: break; } } /************ * 函数名称:handleReceiveData * 功能描述:处理数据 * 参数说明:data,从串口中接收到的数据 ************/ protected void handleReceivedData(final String data){ runOnUiThread(new Runnable() {//通过runOnUiThread在线程中执行UI更新操作 public void run() { strReceiveData = strReceiveData + data; if (chkAckHex.isChecked()) {//十六进制显示 etAck.setText(Convert.dataToHexString(strReceiveData)); }else { etAck.setText(Convert.dataToHexString(strReceiveData));} } }); } @Override protected void onDestroy(){ super.onDestroy(); newPort.onDestroy(); } } E/JIN: WARNING:could not load libuart.so E/zygote: No implementation found for int com.newland.jni.Linuxc.openUart(int, int) (tried Java_com_newland_jni_Linuxc_openUart and Java_com_newland_jni_Linuxc_openUart__II) D/AndroidRuntime: Shutting down VM E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.newland.serialport, PID: 25212 java.lang.IllegalStateException: Could not execute method for android:onClick at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:390) at android.view.View.performClick(View.java:6256) at android.view.View$PerformClick.run(View.java:24701) at android.os.Handler.handleCallback(Handler.java:789) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6541) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method) at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385) at android.view.View.performClick(View.java:6256)  at android.view.View$PerformClick.run(View.java:24701)  at android.os.Handler.handleCallback(Handler.java:789)  at android.os.Handler.dispatchMessage(Handler.java:98)  at android.os.Looper.loop(Looper.java:164)  at android.app.ActivityThread.main(ActivityThread.java:6541)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)  Caused by: java.lang.UnsatisfiedLinkError: No implementation found for int com.newland.jni.Linuxc.openUart(int, int) (tried Java_com_newland_jni_Linuxc_openUart and Java_com_newland_jni_Linuxc_openUart__II) at com.newland.jni.Linuxc.openUart(Native Method) at com.newland.jni.SerialPort.openPort(SerialPort.java:87) at com.example.newland.serialport.MainActivity.myClick(MainActivity.java:132) at java.lang.reflect.Method.invoke(Native Method)  at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)  at android.view.View.performClick(View.java:6256)  at android.view.View$PerformClick.run(View.java:24701)  at android.os.Handler.handleCallback(Handler.java:789)  at android.os.Handler.dispatchMessage(Handler.java:98)  at android.os.Looper.loop(Looper.java:164)  at android.app.ActivityThread.main(ActivityThread.java:6541)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)  Application terminated.

【字节码】如何理解构造函数中return指令?

<p>经反编译后的构造函数,其字节码最后一条指令return如何理解?<br>构造函数没有数值返回类型,也非void返回类型,为何会有一条return指令存在?<br>这条指令在虚拟机中做了些什么工作?</p> <p> </p> <pre name="code" class="字节码">public Test(); Code: 0: aload_0 1: invokespecial #1; //Method java/lang/Object."&lt;init&gt;":()V 4: return LineNumberTable: line 10: 0 </pre> <p> </p><br/><strong>问题补充</strong><br/><div class="quote_title">devworks 写道</div><div class="quote_div">构造方法返回void</div> <br />返回void为啥不显式地写在方法定义处.<img src="/images/smiles/icon_cool.gif"/> <br/><strong>问题补充</strong><br/><div class="quote_title">kerrysk 写道</div><div class="quote_div">return就是返回函数调用,没什么特殊含义。 <br />这个是构造函数,在你在java内写new时,后面除了一条new指令外,还有个 <br />invokespecial调用这个类的构造函数。 <br />return指的是,pop构造函数frame,回到new指令所在的frame。</div> <br /> <br />哦. <br />"pop构造函数frame,回到new指令所在的frame。" <br />确实是return指令的作用,没有特殊含义. <br /> <br />但为什么不显式写在定义处,虚拟机规范要特别采用隐式方式?<br/><strong>问题补充</strong><br/><div class="quote_title">mercyblitz 写道</div><div class="quote_div"><div class="quote_title">yeshaoting 写道</div><div class="quote_div"><div class="quote_title">devworks 写道</div><div class="quote_div">构造方法返回void</div> <br />返回void为啥不显式地写在方法定义处.<img src="/images/smiles/icon_cool.gif"/> </div> <br /> <br /> <br />构造器又不是方法,并且不需要return语句。</div> <br /> <br />不需要return语句,为什么要加return指令...<img src="/images/smiles/icon_cry.gif"/> <br /><br/><strong>问题补充</strong><br/>public Test()<br /> {<br /> System.out.println("public Test();");<br /> }<br /><br /> public void Test()<br /> {<br /> System.out.println("public void Test();");<br /> }<br /><br />void能区分开构造函数与一般方法<br/><strong>问题补充</strong><br/><div class="quote_title">kerrysk 写道</div><div class="quote_div">return就是返回函数调用,没什么特殊含义。 <br />这个是构造函数,在你在java内写new时,后面除了一条new指令外,还有个 <br />invokespecial调用这个类的构造函数。 <br />return指的是,pop构造函数frame,回到new指令所在的frame。</div> <br /> <br />刚又理解了一下,解释得好.<img src="/images/smiles/icon_idea.gif"/> <br />加void与没加void,可能就是为着区分构造函数与一般方法吧.<br/><strong>问题补充</strong><br/><div class="quote_title">mercyblitz 写道</div><div class="quote_div"><div class="quote_title">yeshaoting 写道</div><div class="quote_div"><div class="quote_title">mercyblitz 写道</div><div class="quote_div"><div class="quote_title">yeshaoting 写道</div><div class="quote_div"><div class="quote_title">devworks 写道</div><div class="quote_div">构造方法返回void</div> <br />返回void为啥不显式地写在方法定义处.<img src="/images/smiles/icon_cool.gif"/> </div> <br /> <br /> <br />构造器又不是方法,并且不需要return语句。</div> <br /> <br />不需要return语句,为什么要加return指令...<img src="/images/smiles/icon_cry.gif"/> <br /></div> <br /> <br />必要性和存在性不同,在实现构造器的时候,可以重用方法的部分语法检查!</div> <br /> <br />嗯.对.<br/><strong>问题补充</strong><br/><div class="quote_title">kerrysk 写道</div><div class="quote_div"><div class="quote_title">yeshaoting 写道</div><div class="quote_div"> <br />加void与没加void,可能就是为着区分构造函数与一般方法吧.</div> <br />构造函数与一般方法在虚拟机内不是靠这个区分的。 <br />构造函数与一般方法在虚拟机内的方法签名是不一样的,构造函数一般为&lt;init&gt; <br />一般方法为方法名。 <br />虚拟机根据方法签名,在数据区加载相应的类,构造method结构体,里面有虚拟机指令, <br />解释器负责解释执行。每个方法调用,都在栈上push一个frame,在方法返回时pop,return是 <br />用来告诉解释器,方法解释完毕,在栈上pop frame。 <br /> <br />如果有返回值: <br />&nbsp; sun虚拟机会返回到值栈的栈顶,供调用frame用。 <br />&nbsp; 在dalvik下,是有类似return v0这样的指令,把v0放到全局ret变量,再在调用方法中用move_result指令放到调用栈的 <br />寄存器中。 <br />&nbsp; 也可以在设计invoke指令时,就将返回寄存器直接赋值到调用栈的寄存器中。 <br /></div> <br />谢谢你的耐心讲解,最近在看虚拟机规范很多东西还没理解透彻.

springMVC4整合Tiles3的问题

springMVC配置Tiles3,spring-mvc.xml的配置文件如下 ``` <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> <!-- 配置自动扫描的包 --> <context:component-scan base-package="com.lhd" use-default-filters="true"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> <context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice" /> </context:component-scan> <!-- 配置视图解析器 :如何把handler 方法返回值解析为实际的物理视图--> <bean id="view" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/jsps/" /> <property name="suffix" value=".jsp" /> </bean> <!-- 配置国际化资源文件 <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basename" value="i18n"/> </bean> --> <!-- 直接 配置目标页面 --> <!-- 可以直接响应转发的页面,不需要经过hendler <mvc:view-controller path="/success" view-name="success" /> --> <mvc:default-servlet-handler /> <!-- 在实际开发中通常都需配置 mvc:annotation-driven 标签 --> <mvc:annotation-driven></mvc:annotation-driven> <!-- 配置视图解析器 解析器:使用视图的名字来解析代码 --> <!-- 通过order属性值 来定义视图优先级,数值越小,解析器的优先级越高--> <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"> <property name="order" value="100"></property> </bean> <!-- 定义tiles视图解析器--> <bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass"> <value>org.springframework.web.servlet.view.tiles3.TilesView</value> </property> </bean> <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer"> <property name="definitions"> <list> <value>/WEB-INF/tiles/tiles.xml</value> </list> </property> </bean> </beans> ``` tiles.xml的配置如下 ``` <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN" "http://tiles.apache.org/dtds/tiles-config_3_0.dtd"> <tiles-definitions> <!-- Default Main Template --> <definition name="base" template="/WEB-INF/jsps/main.jsp"> <put-attribute name="tiles" value="........." type="string" /> <put-attribute name="header" value="/WEB-INF/jsps/top.jsp" /> <put-attribute name="menu" value="/WEB-INF/jsps/menu.jsp" /> <put-attribute name="search" value="/WEB-INF/jsps/search.jsp" /> <put-attribute name="body-left" value="/WEB-INF/jsps/left.jsp" /> <put-attribute name="body" value="/WEB-INF/jsps/body.jsp" /> <put-attribute name="footer" value="/WEB-INF/jsps/footer.jsp" /> </definition> <definition name="userLists" extends="base"> <put-attribute name="body" value="/jsps/user/goods/list.jsp" /> </definition> </tiles-definitions> ``` 但是打开,会报 Attribute 'header' not found异常, 后用juni测试,其测试代码如下: ``` public class TestCase { @Test public void test1(){ String bean = "spring-mvc.xml"; ApplicationContext context = new ClassPathXmlApplicationContext(bean); context.getBean("viewResolver"); } } ``` 之后报了这个异常,各位大侠知道 是什么原因么,路径什么的都对过了,没有错,就是读取不到我的tiles.xml配置文件 ``` org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'tilesConfigurer' defined in class path resource [spring-mvc.xml]: Invocation of init method failed; nested exception is java.lang.NullPointerException at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) at com.lhd.test.TestCase.test1(TestCase.java:13) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41) at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) at org.junit.runners.ParentRunner.run(ParentRunner.java:220) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) Caused by: java.lang.NullPointerException at org.apache.tiles.request.ApplicationAccess.register(ApplicationAccess.java:50) at org.apache.tiles.startup.AbstractTilesInitializer.initialize(AbstractTilesInitializer.java:62) at org.springframework.web.servlet.view.tiles3.TilesConfigurer.afterPropertiesSet(TilesConfigurer.java:271) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570) ... 36 more ```

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

ArrayList源码分析(入门篇)

ArrayList源码分析 前言: 写这篇博客的主要原因是,在我上一次参加千牵科技Java实习生面试时,有被面试官问到ArrayList为什么查找的速度较快,插入和删除的速度较慢?当时我回答得不好,很大的一部分原因是因为我没有阅读过ArrayList源码,虽然最后收到Offer了,但我拒绝了,打算寒假学得再深入些再广泛些,下学期开学后再去投递其他更好的公司。为了更加深入理解ArrayList,也为

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

String s = new String(" a ") 到底产生几个对象?

老生常谈的一个梗,到2020了还在争论,你们一天天的,哎哎哎,我不是针对你一个,我是说在座的各位都是人才! 上图红色的这3个箭头,对于通过new产生一个字符串(”宜春”)时,会先去常量池中查找是否已经有了”宜春”对象,如果没有则在常量池中创建一个此字符串对象,然后堆中再创建一个常量池中此”宜春”对象的拷贝对象。 也就是说准确答案是产生了一个或两个对象,如果常量池中原来没有 ”宜春” ,就是两个。...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

玩转springboot启动banner定义所得

最近接手了一个springboot项目,不是不熟悉这个框架,启动时打印的信息吸引了我。 这不是我熟悉的常用springboot的打印信息啊,我打开自己的项目: 还真是的,不用默认的感觉也挺高大上的。一时兴起,就去研究了一下源代码,还正是有些收获,稍后我会总结一下。正常情况下做为一个老程序员,是不会对这种小儿科感兴趣的,不就是一个控制台打印嘛。哈哈! 于是出于最初的好奇,研究了项目的源代码。看到

带了6个月的徒弟当了面试官,而身为高级工程师的我天天修Bug......

即将毕业的应届毕业生一枚,现在只拿到了两家offer,但最近听到一些消息,其中一个offer,我这个组据说客户很少,很有可能整组被裁掉。 想问大家: 如果我刚入职这个组就被裁了怎么办呢? 大家都是什么时候知道自己要被裁了的? 面试软技能指导: BQ/Project/Resume 试听内容: 除了刷题,还有哪些技能是拿到offer不可或缺的要素 如何提升面试软实力:简历, 行为面试,沟通能...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

你打算用Java 8一辈子都不打算升级到Java 14,真香

我们程序员应该抱着尝鲜、猎奇的心态,否则就容易固步自封,技术停滞不前。

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《经典算法案例》01-08:如何使用质数设计扫雷(Minesweeper)游戏

我们都玩过Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,表格中红色的数字哪些是雷(质数)?您能找出多少个呢?文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等,方便大家观察质数的分布规律及特性,以便对算法求解有指导意义。另外,判断质数是初学算法,理解算法重要性的一个非常好的案例。

立即提问
相关内容推荐