每天进步一点点
2016-11-08
1、安装activiti-eclipse插件
2016-11-22
1、在配置shiro的配置文件的时候报错,查出原因就是下面这行导致的
<bean id="shiroSessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager"></bean>
报错信息:
Cannot convert value of type [org.hibernate.impl.SessionFactoryImpl] to required type [org.apache.shiro.session.mgt.SessionFactory] for property 'sessionFactory': no matching editors or conversion strategy found
具体原因是因为系统在配置hibernate的时候也使用了id="sessionFactory",导致冲突,将其改下名字就OK了
PS:事实证明,上面的方案是不可行的,修改了之后,shiro好使了,但是hibernate获取不到sessionFactory了
所以就用了最笨的方法,如下配置:
新增一个sessionFactory的实现<bean id="sessionFactoryShiro" class="org.apache.shiro.session.mgt.SimpleSessionFactory"></bean>
然后注入:<bean id="shiroSessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
<property name="sessionDAO" ref="shiroSessionDAO"/>
<property name="sessionFactory" ref="sessionFactoryShiro"/>
</bean>
2016-11-23
1、还是折腾shiro,要做一个踢出用户的功能
之前用Spring Secutity 是有一个方法,直接就可以踢出指定的用户,所以形成了固化思维,一直在shiro中找类似的方法。
但是shiro貌似没有直接提供,网上抄了一顿,算是找到了个还算靠谱的解决方案:
a:通过sessionDao获取所有的activeSession,如果与此次登录的名称相同,则打一个标签:session.setAttribute('踢出去',TRUE)
b:写一个拦截器,配置在shiroFilter中,如果发现 '踢出去' 的标记,就调用subject.logout()方法登出
c:在shirofilter中配置b中的拦截器并使用到要拦截的url中,诸如:/**=forceout,authc 其中forceout是自定义的拦截器
网上搜一下ForceLogoutFilter,应该会有一堆结果
之前走了一个更弯的路,之前如果判断出用户名相同,我直接session.setTimeOut(0),将session设置为失效,貌似是好使的
但是,反复测试会发现,sessionDao还是能获取到之前的session(shiro可能不是这么判断session失效的)
2、继续折腾shiro,又出了一个幺蛾子:浏览器直接输入程序地址后,跳转到login界面的时候出现了JSESSION,就像这个样子:
http://127.0.0.1/xxxx/login.jsp;JSESSIONID=2ede9ebf-b0c0-48ac-b67a-044c3e841dde
登陆后,shiro认证失败,网上查了一下大概原因:应该是跟浏览器的cookies有关,其实更换一下struts2jar的版本就行了,太低的版本对这个支持不太好,但是我用的是公司的框架,TNND把SSH集合到一个jar了,不太好换,所以采用拦截器的方式解决
网上搜一下:DisableUrlSessionFilter ,应该会有还多转载的
2016-12-30
1、IDEA断点进不去
除了网上一堆的关于增加JAVA_OPTS的,很有可能就是点击了下图的 “禁用断点”
2、用惯SVN的人肯定会习惯于 * 号,but sorry ,idea没有,只能通过颜色的变化来区别是否进行了修改
而且,默认是不级联的,什么意思呢,就是你改了文件A,A变色了,但是A所在的文件夹就跟没事人一样不变色
如果想让他变,那么需要把 settings >> Version Control >> Show directories with changed descendants 前面的checkbox勾上
3、关于添加版本控制
这点要吐槽一下,可能是我这里代理的问题,github就算设置了代理,一样上传不上去
改用SVN,记着,安装客户端的时候一定记着安装svnshell,安装的时候,那个是默认关闭的
或者,如果你喜欢,可以选择安装sliksvn
而且,通过 VCS >> Import into version control >> share XXX 只share了一个目录
上传代码也是上传不上去,慢的要死,需要注意的是,注意选对SVN的版本,现在IDEA默认给出3个选择:
1.6 1.7 1.8 我们单位的server比较老,选择的1.6
2017-1-4
SPRINGMVC 默认是会拦截所有请求的,所以,如果想让你的css js 等静态文件正确显示,其中一种办法是在web.xml
中为这些静态的文件指定默认拦截器,如下:
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> </servlet-mapping>
2017-1-9
SPRINGMVC4 配置json返回
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter" /> </list> </property> </bean> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean>
使用springmvc转换json的时候,它默认把我实体中的字段都设置成了小写,一个解决办法:
在要转换的实体中使用@JsonProperty("pId")进行标注
2017-1-12
今天要把基于hibernate的项目的数据库从mysql换为informix,方言什么的都换了,查数据库的时候还是报错,调试了一下发现执行
select 1 报错,这个是在hibernate中配置的,如下:
<property name="validationQuery" value="select 1"> </property>
informix应该换为:
<property name="validationQuery" value="select count(*) from systables"> </property>
以前用dbcp这个不是必须的,但是换为dbcp2之后,这个是必须项
2017-2-6
activiti使用
今天把activiti的流程整通了一次,并做一些总结:
一、开发步骤
1、首先画流程图,我使用的idea中文老有乱码,所以我就在eclipse的插件中画了
a:参与者 在Main config中的Assignee中配置,可以写成变量${xxx}在启动流程或者完成当前task的时候指定
下面的是在完成当前task后指定,变量boss的值为aaas
Map<String,Object> vs = new HashMap<String,Object>();
vs.put("boss","aaas"); processEngine.getTaskService().complete(task.getId(),vs);
b:可以指定Listener
listneter主要有三种,全局的、连线的、task级的,观察者模式
2、部署
新部署的不会覆盖老的部署,会产生最新的版本,新启动的流程都取最新的部署
如果有一个流程是在老部署的基础上提交的,并且没有完成,那么它的后续操作一样会沿用老部署的
Deployment deployment = processEngine.getRepositoryService().createDeployment()
.name("helloactiviti入门1").addClasspathResource("activiti/diagrams/HelloWorld.bpmn")
.addClasspathResource("activiti/diagrams/HelloWorld.png").deploy();
3、启动流程
一次部署,多次启动,下面是一个指定参与者的
Map<String,Object> vs = new HashMap<String,Object>();
vs.put("userId","admin"); RuntimeService runtimeService = processEngine.getRuntimeService(); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("bpmn文件中的id",vs);
4、执行流程
具体的流程
二、应用到项目中的思路
1、在录入新业务的时候,启动工作流实例,获取流程实例ID:ProcessInstanceId,并与业务ID进行绑定(新建一张业务关联表)
2、根据当前登录用户的ID获取其待办任务
List<Task> tasks = processEngine.getTaskService().createTaskQuery().taskAssignee("用户ID").list();
3、根据待办任务可以获取流程实例ID:ProcessInstanceId
task.getProcessInstanceId()
4、根据3中的ID即可关联到业务ID,然后进行业务的复杂操作
2017-2-6
quartz自动任务,启动的时候报错,但是能正常启动
2016-04-1914:00:37.281 [main] DEBUG o.s.s.a.ScheduledAnnotationBeanPostProcessor -Could not find default ScheduledExecutorService bean org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.scheduling.TaskScheduler] is defined
需要增加如下配置:
<!-- executor线程池,含义和java.util.concurrent.Executor是一样的,pool-size的大小官方推荐为5~10 --> <task:executor id="executor" pool-size="5" /> <!-- scheduler的pool-size是ScheduledExecutorService线程池,默认为1 --> <task:scheduler id="scheduler" pool-size="5" /> <task:annotation-driven executor="executor" scheduler="scheduler" />
2017-02-10
一、redis客户端输出中文,出现了\xe6\x89\x8b\xe7\xbb\xad\xe8\xb4\xb9 的16进制
在启动客户端的时候增加参数 --raw即可
./redis-cli --raw
二、用spring-data-redis连接的时候,后台报错无法验证,没有其他明确的提示,要注意redis是否运行在protect mode下
可以设置密码 config set requirepass xxxxx
相关推荐
【标题】: "用每天进步一点点打造企业文化动力" 【描述】: 该文档讲述了长城汽车股份有限公司如何通过坚持“每天进步一点点”的企业理念,推动自身从一个小型企业成长为国内领先的汽车制造商,取得了显著的业绩增长...
【每天进步一点点】的理念强调的是持续的自我提升和改进,无论是在个人能力还是工作中,都可以应用这一原则。在这个读书笔记中,作者以幼儿教育为例,深入探讨了如何将这一理念付诸实践。 在幼儿教育中,每天进步一...
《每天进步一点点》下册是针对二年级学生设计的一份道德与法治教育材料,旨在培养孩子们良好的生活习惯、学习习惯和社会责任感。这份PPT通过一系列具体的日常行为,如排路队、举手发言、认真上课、写作业等,引导...
这篇文档汇集了多个关于励志和自我提升的主题,强调了每天进步一点点的重要性。这些主题通过不同的方式阐述了持续努力和积累对于个人成长和成功的关键作用。 首先,文档指出,每天哪怕只有一点点的进步,也能带来...
尤其对于保定市长城汽车股份有限公司这样的企业,其从一个小型团体企业发展成为中国最大的皮卡、SUV专业制造商,再到民营汽车行业的领导者,其成功背后的核心就在于以“每天进步一点点”为主旨的企业文化。...
励志人生感悟-每天进步一点点参考.doc
解压后运行explorer.html文件,打开后即可看到flex控件基本例子,显示效果在上,源码在下。很flex初学者学习。
线性回归是机器学习中的一种基础方法,主要应用于连续数值的预测,属于监督学习的范畴。在本篇文档中,作者详细介绍了线性回归的概念、模型表示和代价函数。 首先,线性回归的核心是建立一个线性模型来预测输出变量...
2. 对每一层进行以下计算:计算下一层的输入向量zl+1=(Θl)Ta_l,然后通过激活函数得到该层的输出向量al=g(zl)。 3. 最终得到输出层的向量a5=g(z5)。 这个过程就完成了从输入到输出的前向传播,得出神经网络对输入...
本文的核心主题是“每天进步一点点”,这一理念源于中国长城汽车企业的企业文化,也被应用于个人成长和团队管理中。这一概念强调的是通过持续、微小的进步,随着时间的推移,积累成显著的成长和变化。以下是围绕这一...