老兄,快来一起过春天!(四)

拆解一个带主动均衡的BMS模块:从变压器、MOS管矩阵到控制逻辑,图文详解内部设计与成本构成 本文深度拆解了一款带主动均衡功能的BMS模块,详细解析了其核心架构、元器件选型与成本构成。通过高频变压器、MOS管矩阵等硬件设计,该模块实现了高达87%的能量转移效率,远超普通被动均衡方案。文章还揭示了汽车级PCB设计、软件策略优化等关键技术细节,为锂电池管理系统设计提供了实用参考。 阅读详情

 AOP:面向切面编程

 

OOP主要是通过对象继承、多态的特点,来进行强大的代码重用。
而AOP是将整体的系统分成各个不同模块,形成不同的切面来进行程序设计。

 

如Struts中数据层的每个方法,就算使用各种ORM框架,如:

...........
boolean backbool = false;
daoManager.startTransaction();
try{
  .......
 daoManager.commitTransaction();
}catch(Exception ex)
{
 ex.printStackTrace();
}
finally{
 daoManager.endTransaction();
}
...........


也不能彻底摆脱事务开始、进行数据操作、结束事务的繁杂代码编写。

而AOP模式可以把每个方法的这些相同代码提取出来,放到一个特定的类中去。而且保证在执行这些原本含有繁杂
代码的方法时,你可以自定义在哪里、在什么时候、用什么状态去调用这个特定的类。这样程序设计将会又一次
得到极大的代码重用,而维护也会更加简单。

 

AOP的几个重要接口记录:
MethodBeforeAdvice:切入到方法执行之前。
MethodInterceptor:切入到方法的具体代码中。
AfterReturningAdvice:切入到方法执行结束之后。
ThrowsAdvice:当AOP监视的业务方法抛出错误,切入到错误方法总拦截错误。

 

其中,MethodInterceptor可切入到方法的具体代码中,因此可完全控制整个方法的走向,甚至改变返回值。

 

 

新建web工程springaop如下结构:

 

在dao包下新建业务服务接口IUserService.java

  1. public interface IUserService { 
  2.     void create(String username,String password);
  3.     void upuser(String username,String password);
  4. }

impl包下有实现类UserServiceImpl.java

  1. package com.springaop.dao.impl;
  2. import com.springaop.dao.IUserService;
  3. import com.springaop.data.UserData;
  4. public class UserServiceImpl implements IUserService {
  5.     
  6.     private UserData userdata;
  7.     public void create(String username, String password) {
  8.         if(userdata == null)
  9.             userdata = new UserData();
  10.         
  11.         if(username.equals(userdata.getMap().get("admin")) 
  12.                 password.equals(userdata.getMap().get("password"))){
  13.             System.out.println("姓名:" + username + "    密码:" + password);
  14.         }
  15.         else{
  16.             throw new RuntimeException("参数错误");
  17.         }
  18.                 
  19.     }
  20.     
  21.     public void upuser(String username,String password){
  22.         System.out.println("执行到:upuser方法");
  23.     }
  24.     public void setUserdata(UserData userdata) {
  25.         this.userdata = userdata;
  26.     }
  27. }

data包下有数据类UserData.java

  1. package com.springaop.data;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. import java.util.Set;
  5. public class UserData {
  6.     private Map<String,String>map = new HashMap<String, String>();
  7.     
  8.     public UserData(){
  9.         map.put("admin", "admin");
  10.         map.put("password", "123456789");
  11.     }
  12.     public Map<String, String> getMap() {
  13.         return map;
  14.     }
  15.     public void setMap(Map<String, String> map) {
  16.         this.map = map;
  17.     }
  18. }

main包下有测试类TestMain.java

  1. package com.springaop.main;
  2. import org.springframework.context.ApplicationContext;
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4. import com.springaop.dao.IUserService;
  5. import com.springaop.dao.impl.UserServiceImpl;
  6. public class TestMain {
  7.     public static void main(String[] arg0){
  8.         ApplicationContext tx = new ClassPathXmlApplicationContext("applicationContext.xml");
  9.         IUserService user = (UserServiceImpl)tx.getBean("userservice");
  10.         try{
  11.             user.create("admin", "123456789");
  12.             user.upuser("admin", "123456789");
  13.         }catch(Exception e){            
  14.         }
  15.     }
  16. }

将 TestMain.java  作为java Application程序运行,可显示:
姓名:admin    密码:123456789
执行到:upuser方法

这样一切正常,运行成功。

 

以上的测试是在无AOP模式下的程序。现在加入AOP切面:

1:将 UserServiceImpl .java 中的属性 UserData 做为注入bean引入,放弃在类中实例化该类,这样更符合Spring松耦合思想。

      在 ApplicationContext.xml 中加入:   

  1.     <bean id="userservice" class="com.springaop.dao.impl.UserServiceImpl" >
  2.         <property name="userdata">
  3.             <bean class="com.springaop.data.UserData"></bean>
  4.         </property>
  5.     </bean>

更改 UserServiceImpl 代码:

  1. .......
  2. public void create(String username, String password) {
  3.    //删除此段 
  4.    /*if(userdata == null)
  5.       userdata = new UserData();*/
  6.    if(username.equals(userdata.getMap().get("admin")) 
  7. .......

 2:加入分别实现了AOP接口(前置、后置、错误通知)的4个类到程序中:

1):加入Spring Core、Spring AOP包到程序中。

2):在aopservice下,新建4个类:

          UserBeginPrint.java
          实现MethodBeforeAdvice接口,用于在方法执行之前的切入,比如记录日志,检查某些全局变量,开启事务等;

  1. package com.springaop.aopservice;
  2. import java.lang.reflect.Method;
  3. import org.springframework.aop.MethodBeforeAdvice;
  4. public class UserBeginPrint implements MethodBeforeAdvice {
  5. public void before(Method method, Object[] args, Object target)
  6.             throws Throwable {
  7.         System.out.println("方法开始执行");
  8.     }
  9. }

    UserNowPrint.java
    实现MethodInterceptor接口,用于在方法执行时的切入,如对方法传入参数的检查判断、传入值的通用操作等。

  1. package com.springaop.aopservice;
  2. import org.aopalliance.intercept.MethodInterceptor;
  3. import org.aopalliance.intercept.MethodInvocation;
  4. public class UserNowPrint implements MethodInterceptor {
  5.    public Object invoke(MethodInvocation method) throws Throwable {
  6.     System.out.println("方法正在执行,参数为:");
  7.     return method.proceed();
  8.    }
  9. }

    UserExitPrint.java
    实现AfterReturningAdvice接口,用于在方法执行后的切入,通常都做方法的收尾擦除工作,如释放某些通用变量,关闭事务,记录日志等。

  1. package com.springaop.aopservice;
  2. import java.lang.reflect.Method;
  3. import org.springframework.aop.AfterReturningAdvice;
  4. public class UserExitPrint implements AfterReturningAdvice {
  5.     public void afterReturning(Object returnValue, Method method,
  6.             Object[] args, Object target) throws Throwable {
  7.         System.out.println("方法执行完成");       
  8.     }
  9. }

    UserErrorPrint.java
    实现ThrowsAdvice接口,用于当业务方法抛出错误后的处理。

  1. package com.springaop.aopservice;
  2. import java.lang.reflect.Method;
  3. import org.springframework.aop.ThrowsAdvice;
  4. public class UserErrorPrint implements ThrowsAdvice {
  5.     public void afterThrowing(Method m,Object[] args,Object target,Throwable subclass){
  6.         System.out.println("你输入的姓名不正确!");
  7.     }
  8.     
  9. }

3:以上4个AOP类搞好以后,打开ApplicationContext.xml。在管理bean声明中加入以上4个类。

  1. <bean id="userbegin" class="com.springaop.aopservice.UserBeginPrint"></bean>
  2.     <bean id="usernow" class="com.springaop.aopservice.UserNowPrint"></bean>
  3.     <bean id="userexit" class="com.springaop.aopservice.UserExitPrint" ></bean>
  4.     <bean id="usererror" class="com.springaop.aopservice.UserErrorPrint" ></bean>

随后进行SpringAOP装配:

  1. <bean id="useraop" class="org.springframework.aop.framework.ProxyFactoryBean">
  2.         <property name="target" ref="userservice" ></property>
  3.         <property name="interceptorNames">
  4.             <list>
  5.                 <value>userbegin</value>
  6.                 <value>usernow</value>
  7.                 <value>userexit</value>
  8.                 <value>usererror</value>
  9.             </list>
  10.         </property>
  11.     </bean>

4:更改测试类TestMain.java 代码,把原本转换为UserServiceImpl的代码换为IUserService,把getBean的对象换为AOP代理Bean:useraop

  1. ........
  2. ApplicationContext tx = new ClassPathXmlApplicationContext("applicationContext.xml");
  3. IUserService user = (IUserService)tx.getBean("useraop");
  4. try{
  5.     user.create("admin", "123456789");
  6. ........

   完成装配之后,同样运行TestMain,一切顺利的话,可以看到运行结果为:

            方法开始执行
           方法正在执行,参数为:
           姓名:admin    密码:123456789
           方法执行完成
           方法开始执行
           方法正在执行,参数为:
           执行到:upuser方法
           方法执行完成

 

   这段 AOP 装配XML意为:

           <property name="target" ref="userservice" ></property>

          target属性指需要SpringAOP切面去监控的类 或 方法。指定了ref 后,AOP切面只能作用于ref指定的类 或方法

 

     <property name="interceptorNames">
           <list>
               <value>userbegin</value>
               <value>usernow</value>
               <value>userexit</value>
                <value>usererror</value>
          </list>
    </property>

     interceptorNames 属性指需要AOP切面去调用的AOP接口实现类(Advice:增强)。调用的顺序是按照list中value的顺序来进行的,如:把usernow、userexit提前,

               <value>usernow</value>
               <value>userexit</value>
               <value>userbegin</value>
               <value>usererror</value>

 

   可以看到运行结果也随之改变

      方法正在执行,参数为:
      方法开始执行
      姓名:admin    密码:123456789
      方法执行完成
      方法正在执行,参数为:
      方法开始执行
      执行到:upuser方法
      方法执行完成

 

     list也可以不必set全部4个AOP接口,可以按照自己的需要set需要的接口,如只有usernow一个,或有2个、3个等。

      <bean id="useraop" class="org.springframework.aop.framework.ProxyFactoryBean">

     ProxyFactoryBean 是Spring制定的AOP代理bean,具有 target 目标对象和 interceptorNames 声明注入的各种接口对象的工厂Bean,他返回包含target指定类的上层接口,如果这个指定类实现了多重接口,他将返回所有的上层接口,而业务类可根据需要转换接口,也就是TestMain中的 IUserService user = (IUserService)tx.getBean("useraop"); 如业务类需要指定ProxyFactoryBean的返回接口,可在其属性中加上:

      <property name="interfaces" value="com.springaop.dao.IUserService"></property>   value需要填写指定实现接口类的全路径。

 

     这次装配运行中,可以看到TestMain测试类调用了target代理指定类的两个方法 create 、upuser,而装配没有指定AOP代理具体代理监控哪个方法,因此他默认把所有调用到target代理指定类的操作都代理监控起来了。结果打印了两次开始、正在执行、结束,下面的装配需要实现具体指定target监控代理的方法。不至于IUserService的方法全都被代理。

 

     打开ApplicationContext.xml,增加管理Bean如下:

  1. <bean id="useraopAdvisor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor" >
  2.     <property name="mappedNames">
  3.         <list>
  4.                 <value>create</value>
  5.             </list>
  6.         </property>
  7.         <property name="advice" ref="userbegin">                
  8.         </property>     
  9.     </bean> 

     NameMatchMethodPointcutAdvisor 类是spring AOP 最基本的 PointcutAdvisor (切入增强),它是Spring中静态Pointcut的实例,这段话是Spring 手册上的译文,没有深入到Spring 的AOP 底层。不知道具体何意,只是觉得这个类是AOP 切入的基类?是Spring初始化时的静态切入类的具体实例。

     属性mappedNames指定具体监控 target  代理类的哪个方法,如有多个方法需要监控,可在list中set具体方法名,更可以用正则将符合条件的方法监控起来。

     <value>*create*</value>

     <value>*upuser*</value>

 

加入useraopAdvisor注入bean后,更改useraop注入bean的interceptorNames 属性的list。

    <value>userbegin</value>
    <value>usernow</value>
    <value>userexit</value>
    <value>usererror</value>

更改为:

    <value>useraopAdvisor</value>

 

最后运行TestMain,可以发现结果为:

 

方法正在执行,参数为:
姓名:admin    密码:123456789
执行到:upuser方法

 

 

 


target代理监控的UserServiceImpl类只有creat处于监控范围之内 useraopAdvisor  — mappedNames — mappedNames  —  list — value — create。

 

 

 

用了一天的时间看完SpringAOP,忽然感觉这东西好像 Filter ,和过滤器一样针对某个方法、某个类、某个文件夹进行过滤,不知道他的底层实现是怎么样的。另外,在做 NameMatchMethodPointcutAdvisor  实现时没有看到资料 可以在一个bean设置中代理监控N个Advisor ,试过诸如:

<property name="advice">

    <list>

         <ref="userbegin" />

        <ref="usernow" />

   </list>

</property>

 

但还是报错了,后来还是声明了4个NameMatchMethodPointcutAdvisor  ,每个advisor 监控一个advice,最后再用useraop装配起来才成功。但感觉这样应该不是最好实现方法,如果哪位高手看到这个疑问,又知道怎么做,请留言或站内联系我,呵呵,小生先谢过了!
另外Spring AOP 诸多术语如Advice(增强)、pointcut(切入点)、AOP Proxy(AOP 代理)等都按自己理解,觉得更符合自己理解的词代替了,如增强 - 监控、切入点 - 切入、AOP Proxy -代理监控,希望随着对Sring了解渐渐深入,有一天会完全理解这些术语的含义。

相关推荐

STM32--LoRa通信模块

模块根据MD0的配置与AUX引脚的状态会进入不同的功能其中在通信功能下,包含4种工作模式。

qq_47258284的博客 1万+

老兄,快来一起过春天!(八)

Spring集成Xfire 用XFire 打造webServices 一:下载XFire1.26官网地址:http://xfire.codehaus.org/Download下载 xfire-distribution-1.2.6.zip 与 xfire-all-1.2.6.jar 包,如单独下载jar包,会发生譬如找不到Spring依赖或Ant依赖等少包问题,因此最好把依赖ja

552

激光SLAM总结——Fast LIO / Fast LIO2 / Faster LIO

激光SLAM总结——Fast LIO / Fast LIO2 / Faster LIO 在之前的工作中有接触过LOAM,最近在工作中又接触到Faster LIO相关的工作,于是想着对Fast LIO / Fast LIO2 / Faster LIO这一系列工作进行一个简单的总结,以加深自己对激光SLAM算法的理解,之前总结过的一些和激光SLAM算法相关的博客还有,感兴趣的同学可以一起学习讨论: 激光SLAM总结——VLOAM / LIMO算法解析 激光SLAM总结——LIO-Mapping / LIOM /

weixin_44580210的博客 1万+

老兄,快来一起过春天!(七)

打开 Spring2.0管理Ibatis 文中所建的工程:ComposeIbatis找到接口 IUserDao.java ,增加方法:public void addUserInfo(); 用于增加用户操作。其实现类:UserImpl.java 实现 addUserInfo() 方法,在业务类 UserService 中调用,而Struts的action调用业务类。所有改动如下:一、IUse

354

2025_NIPS_Grounded Reinforcement Learning for Visual Reasoning

尽管基于思维链的强化学习已在数学、编程等任务中显著提升语言模型性能,但视觉推理面临额外复杂性——需模型引导视觉注意力、解读感知输入,并将抽象推理锚定到空间证据上。本文提出ViGoRL(视觉接地强化学习),这是一种通过强化学习训练的视觉语言模型,能将每个推理步骤明确锚定到特定视觉坐标。受人类视觉决策启发,ViGoRL学会生成空间接地的推理轨迹,在每个步骤引导视觉注意力聚焦任务相关区域。当需要细粒度探索时,我们提出的多轮强化学习框架允许模型随着推理展开动态缩放至预测坐标。

c_cpp_csharp的专栏 58

雷达参数的设置

采样率又可以叫做采样速率或者,顾名思义就是每秒采集的次数。该值越高,单位时间内对信号的采集越多,采样率的单位可以用Hz或者sps表示(sps是采样率,是每秒采样点的数量,sp表示采样点数),一般1sps=1Hz。采样时间是采样点数和采样周期的乘积得到的结果。假设实际采样率为4560ksps,采样点数为256,那么采样周期为1/4560(ms),那么ADC的采样时间就为256*(1/4560)(ms)=0.056ms=56微秒。

qq_50974341的博客 1911

老兄,快来一起过春天!(二)

依赖注入的注入类型可以注入基本类型、集合、类、甚至程序要使用的资源。下面的例子可以看到applicationContext.xml中注入的各种类型。在上一篇已经构造好的目录上增加一个util包,新建类 TestOK 。TestOK 代码如下:package com.testspring.util;public class TestOK {        public String testsay(

352

我的宠物狗学编程:从零开始的代码之旅

在这个示例中,我们定义了一个名为"interact"的函数,它通过输入函数获取用户的输入,并根据输入执行相应的代码块。在编程中,我们使用条件语句来根据不同的条件执行不同的代码块。对于我的狗狗,我将创建一个名为"feed"的函数来表示它的进食行为,并根据不同的条件输出不同的信息。在这个示例中,我们定义了一个名为"feed"的函数,并使用一个参数"food"来表示食物。对于我的狗狗,我将创建一个名为"dog_name"的变量来存储它的名字。对于我的狗狗,我将创建一个名为"bark"的函数来表示它的叫声。

2301_79331387的博客 333

老兄,快来一起过春天!(一)

     很有趣,spring 中文理解可为“春天”。     2005 java中间件世界由于spring横空出世,重量级EJB应用似乎岌岌可危,各种轻量级应用如:PicoContainer、Avalonwei已经微不足道了。转瞬过了3年,spring亦从2.0披上了2.5战衣,而3.0也引人侧目、呼之欲出,java的春天渐有横扫六合之霸王之相。      那么,spring中微醉的

379

MATLAB基础应用精讲-【强化学习】Actor - Critic 算法(附python代码实现)

这种架构结合了策略梯度方法(Policy - Gradient Methods)和价值函数估计方法(Value Function Estimation Methods)的优点。在强化学习中,智能体(Agent)需要通过与环境(Environment)的交互来学习最优的行为策略,以获得最大的累积奖励(Cumulative Reward)。

qq_36130719的博客 360

[漏洞挖掘与防护] 03.漏洞利用之WinRAR安全缺陷复现(CVE-2018-20250)及软件自启动分析

上一篇文章将详细介绍MS08-067远程代码执行漏洞(CVE-2008-4250)及防御过程,它是Windows Server服务RPC请求缓冲区溢出漏洞,利用445端口,并通过Metasploit工具获取shell及进行深入的操作。这篇文章将详细讲解WinRAR漏洞(CVE-2018-20250),并复现了该漏洞和讲解了恶意软件自启动劫持原理。基础性文章,希望对入门的同学有帮助。

杨秀璋的专栏 1088

老兄,快来一起过春天!(五)

使用 Spring AOP ,配置ApplicationContext.XML 实在是繁杂而乏味的工作。如果有多于10个切入点需要AOP代理,可以想象XML中的装配需要声明多少个切入bean,每个切入点需要4个增强,就需要40个切入点声明。而在aop装配中,也需要把这些声明一一写到注入的list中。因此,在大部分情况下,应该使用一些AOP框架来简化这些AOP装配。譬如:AspectJ。As

566

【问题解决】Python 异步 asyncio 卡死、协程不执行、任务泄漏,保姆级排错

本文详细分析了Python异步编程中常见的卡死、协程不执行和任务泄漏问题。文章首先列举了这些问题的典型表现,如程序卡住、死锁、任务未启动等。然后深入剖析了各类问题的根源,包括同步阻塞操作、未正确await、资源未清理等。针对这些问题,文章提供了两套解决方案:一是异步编程最佳实践,包括安全协程执行、带超时的执行、任务清理等实用方法;二是死锁检测和预防机制,通过锁管理和等待图分析来避免死锁。文章还包含可直接使用的代码示例,帮助开发者快速定位和解决异步编程中的常见问题。

博客 448

老兄,快来一起过春天!(三)

打开testspring工程新建包:com.testspring.message   放置存放各种消息的propertise文件。新建包:com.testspring.services   放置获取propertise文件的服务类。 结构如下: message包下新建:message_en_US.properties文件。加入以下内容:    say = hel

464

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

老兄,快来一起过春天!(六)

Spring整合Struts1.X 新建web工程 composeStruts ,使用MyEclipse先后加入Struts1.2、Spring2.0注意:选择 Spring2.0 jar包时注意将 Spring 2.0 web Libraries 导入,结构如下: 打开web.xml,加入Spring监听:         org.springframework.web.co

493

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

从计算机图书说开去,向每一位为软件事业作出贡献的人叫好!向他们致敬!

向叶卡问好,问小BB好,最早看候先生书的人大都应该认识叶小姐,也应该记得“且将新火试新茶,诗酒趁年华 ”。还记得当年候先生的书在刚出时,叶卡小姐在其中作的贡献。也向华中科技大学出版社问好。武汉全国高校第3,现在总算有一个可以说的上话的出版社了,希望以后能一直能看到他的书。唯楚有才呀,哈哈。也祝福这个城市,因为那是我的家,我在哪儿长大。下面是叶卡的在xilu当斑竹的的网站。http://yeka

C++是促进脑死亡的最佳方式 2081

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

数据的四个特征

我们总是在谈数据分析,那么到底什么是数据,数据有什么特征呢?这个问题虽基础却重要。 这里我们所说的数据,仅指应用于企业运营的市场信息。它是认识事物的中间环节,是事物的表面特征,其作用在于消除事物的不确定性。它至少具有以下四个基本特征。 一、时效性 所谓时效性是指数据的发生和运用要有个提前期,失去时效性,就失去了潜在机会。 举个例子,以前在广州有个大厦,它对数据的时效性运用的就很好。据说有...

hf200012 4855

数据的四大特征_大数据

数据的四大特征_大数据 我们总是在谈数据分析,数据分析什么的,那我们现在先不谈数据分析,我们先来谈谈数据分析的基础——数据。那么到底什么是数据,数据有什么特征呢?这个问题虽基础却重要。 这里我们所说的数据,仅指应用于企业运营的市场信息。它是认识事物的中间环节,是事物的表面特征,其作用在于消除事物的不确定性。它至少具有以下四个基本特征。 数据分析师分析数据的特征之一时效性 所谓时...

weixin_30410999的博客 348

一张普通照片中的神秘信息是如何被发现的?

一张普通照片中的神秘信息是如何被发现的?

网管小贾的博客 1057

『幽默』网络经典语录1600条~~(可累死我了)

1、老鼠一发威,大家都是病猫。 2、和一MM争论鲸鱼是不是鱼,最后我说“曰本人也带个人字”,她这才同意鲸鱼不是鱼。 3、男人膝下有黄金,我把整个腿都切下来了,连块铜也没找着! 4、春天我把玉米埋在土里,到了秋天我就会收获很多玉米。春天我把老婆埋在土里,到了秋天我就会磺贡校? 5、如果你看到面前的阴影,别怕,那是因为你的背后有阳光! 6、踏遍青楼人未老,请用汇仁肾宝

chen98的专栏 2493

淇澳岛的红树林

原文地址:淇澳岛的红树林 (来自@轻博客) 作者:LOVE我太平搏簿     当再次看到这条河流蜿蜿蜒蜒扭动着腰肢优雅的款款走入浓 绿茂密的红树林间 枝枝如戟的芦苇摇曳着暗红的樱须 燃烧着下午四时的阳光 一个人坐在木栈道旁 微眯着双眼 神思远扬 云在远山迷蒙处浮动 鸟雀鸣叫绿林深处 间歇处 寂静无声 有风树梢缠绕 一片叶 缓缓曼妙 扭   动 飘   落     下       来  ...

心语家园 - www.xinyucn.cc 446

2007年网络经典语录

001◎老鼠一发威,大家都是病猫。 002◎和一MM争论鲸鱼是不是鱼,最后我说“曰本人也带个人字”,她这才同意鲸鱼不是鱼。 003◎男人膝下有黄金,我把整个腿都切下来了,连块铜也没找着! 004◎春天我把玉米埋在土里,到了秋天我就会收获很多玉米。春天我把老婆埋在土里,到了秋天我就会…被枪毙! 005◎如果你看到面前的阴影,别怕,那是因为你的背后有阳光! 006◎踏遍青楼人未老,请用汇仁肾宝。 00

fredlau 痞子刘的博客 1058

奥运,或许是我们的救命草!

奥运本来是件人人期待的事,日子近了,事情却变的越来越奇怪,一个简单的火炬传递,闹出那么多的事情,我有点糊涂了,怎么了,至于这样吗?于是,对,对,对法国人,对全世界,我们骂声一片! http://cache.tianya.cn/techforum/content/417/8005.shtml,看了这位高人的文章,我突然醒悟,阴谋啊,好大的阴谋啊. 开始于房产,房产高涨,接着股市,股市大好,于...

50

经典100句

    001老鼠一发威,大家都是病猫。        002和一MM争论鲸鱼是不是鱼,最后我说“曰本人也带个人字”,她这才同意鲸鱼不是鱼。        003男人膝下有黄金,我把整个腿都切下来了,连块铜也没找着!        004春天我把玉米埋在土里,到了秋天我就会收获很多玉米。春天我把老婆埋在土里,到了秋天我就会…被枪毙!        005如果你看到面

张彤的专栏 589

清明祭祖

清明祭祖(七律二首) 岭西王家始祖先,讳名芝奉创田园。至今延续十四代,现有宗亲逾两千。 农牧工商齐拓展,教学戏曲共腾繁。祭花奠纸心怀念,良好风俗永世传。 王氏清明祭始祖,占坡群主摆坟山。集合地点富家峪,选定时辰礼拜天。 继往开来不忘本,承前启后勇争先。芝麻花绽节节旺,孝子贤孙重任担。 2019、3、28 星期四 自豪(七古) 看到岭西传视频,老少男...

weixin_30846599的博客 220

第七颗头骨 第二章

第二章 侵入者  春天的夜晚本该清凉而宜人,但在绿泥森林里,却包含着一股潮湿阴森的味道。月亮慢慢升起,亡灵也从坟墓、洞窟中浮出来,开始四处活动。  人们总认为满月会使亡灵变得更强大,实际上并非如此。亡灵的力量通常只取决于其本身,满月会使魔兽之类的生物更加疯狂,但对于亡灵则毫无影响。只不过,月圆的时候,人会更加敏感,从而有更多的机会感受到亡灵的存在。所以,问题其实在于人这一边。  今晚正是这样。月光

Dark White Polyphony 深白复调 1422
上一篇: 获取硬盘分区卷的序列号
下一篇: 老兄,快来一起过春天!(五)
Begin_Game
博客等级 码龄18年 239粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值