這玩意能靠譜才怪。在ROS Kinetic和Gazebo 8中使用智慧汽車模擬演示
在ROS Kinetic和Gazebo 8中使用智慧汽車模擬演示
智慧車無人駕駛技術是目前人工智慧和機器人技術的研究熱點,有許多開源平臺可以使我們。本文分享一下目前ROS官網最新推薦的一款開源汽車模擬模擬。使用的平臺為Ubuntu 16.04 + ROS Kinetic + Gazebo 8。同時需要具備Docker和nvidia-docker的基礎。
Gazebo:
RVIZ:
1. Docker安裝
2. nvidia-docker安裝
請參考文末附錄。如果出現如下錯誤,請按附錄內容進行修正:
[html] view plaincopyprint?
- $ nvidia-docker run -ti --rm nvidia/cuda
- nvidia-docker | 2017/07/06 13:13:17 Error: unsupported CUDA version: driver 6.5 < image 8.0.61
3. 配置和使用ROS/Gazebo中的Prius示例
$ ./build_demo.bash
----
[html] view plaincopyprint?
- [email protected]:~/Rob_Soft/car_demo-master$ ./build_demo.bash
- [sudo] password for relaybot:
- Sending build context to Docker daemon 58.96MB
- Step 1/12 : FROM osrf/ros:kinetic-desktop
- ---> fe1c52012515
- Step 2/12 : LABEL com.nvidia.volumes.needed "nvidia_driver"
- ---> Using cache
- ---> c0a552983f0f
- Step 3/12 : ENV PATH /usr/local/nvidia/bin:${PATH}
- ---> Using cache
- ---> b4336a6fcd17
- Step 4/12 : ENV LD_LIBRARY_PATH /usr/local/nvidia/lib:/usr/local/nvidia/lib64:${LD_LIBRARY_PATH}
- ---> Using cache
- ---> d9f0873b5c72
- Step 5/12 : RUN apt-get update && apt-get install -y wget lsb-release sudo mesa-utils && apt-get clean
- ---> Using cache
- ---> d1d2e996eae1
- Step 6/12 : RUN echo "deb http://packages.osrfoundation.org/gazebo/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list && wget http://packages.osrfoundation.org/gazebo.key -O - | apt-key add - && apt-get update && apt-get install -y gazebo8 ros-kinetic-gazebo8-ros-pkgs ros-kinetic-fake-localization ros-kinetic-joy && apt-get clean
- ---> Using cache
- ---> 62e82befdf92
- Step 7/12 : RUN mkdir -p /tmp/workspace/src
- ---> Using cache
- ---> 3344777de771
- Step 8/12 : COPY prius_description /tmp/workspace/src/prius_description
- ---> Using cache
- ---> d6c8c42918c2
- Step 9/12 : COPY prius_msgs /tmp/workspace/src/prius_msgs
- ---> Using cache
- ---> ce2281718303
- Step 10/12 : COPY car_demo /tmp/workspace/src/car_demo
- ---> Using cache
- ---> ca825da11474
- Step 11/12 : RUN /bin/bash -c 'cd /tmp/workspace && source /opt/ros/kinetic/setup.bash && catkin_make'
- ---> Using cache
- ---> a78d42ed877a
- Step 12/12 : CMD /bin/bash -c source /opt/ros/kinetic/setup.bash && source /tmp/workspace/devel/setup.bash && roslaunch car_demo demo.launch
- ---> Using cache
- ---> 20890ac15cee
- Successfully built 20890ac15cee
- Successfully tagged osrf/car_demo:latest
- [email protected]:~/Rob_Soft/car_demo-master$
----
$ ./run_demo.bash
[html] view plaincopyprint?
- $ ./run_demo.bash
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- ... logging to /root/.ros/log/31d9adfa-620b-11e7-a113-0242ac110002/roslaunch-a0950e425e8e-82.log
- Checking log directory for disk usage. This may take awhile.
- Press Ctrl-C to interrupt
- Done checking log file disk usage. Usage is <1GB.
- started roslaunch server http://a0950e425e8e:37129/
- SUMMARY
- ========
- PARAMETERS
- * /joy_node0/dev: /dev/input/js0
- * /joy_node1/dev: /dev/input/js1
- * /robot_description: <?xml version="1....
- * /rosdistro: kinetic
- * /rosversion: 1.12.7
- * /use_sim_time: True
- NODES
- /
- fake_localization (fake_localization/fake_localization)
- gazebo (gazebo_ros/gzserver)
- gazebo_gui (gazebo_ros/gzclient)
- joy_node0 (joy/joy_node)
- joy_node1 (joy/joy_node)
- joystick_translator (car_demo/joystick_translator)
- robot_state_publisher (robot_state_publisher/robot_state_publisher)
- rviz (rviz/rviz)
- spawn_urdf (gazebo_ros/spawn_model)
- very_inaccurate_odom (tf2_ros/static_transform_publisher)
- auto-starting new master
- process[master]: started with pid [93]
- ROS_MASTER_URI=http://localhost:11311
- setting /run_id to 31d9adfa-620b-11e7-a113-0242ac110002
- process[rosout-1]: started with pid [106]
- started core service [/rosout]
- process[gazebo-2]: started with pid [109]
- process[gazebo_gui-3]: started with pid [113]
- process[robot_state_publisher-4]: started with pid [142]
- process[fake_localization-5]: started with pid [195]
- process[very_inaccurate_odom-6]: started with pid [196]
- process[joystick_translator-7]: started with pid [255]
- process[joy_node0-8]: started with pid [299]
- process[joy_node1-9]: started with pid [300]
- Gazebo multi-robot simulator, version 8.1.1
- Copyright (C) 2012 Open Source Robotics Foundation.
- Released under the Apache 2 License.
- http://gazebosim.org
- process[spawn_urdf-10]: started with pid [328]
- process[rviz-11]: started with pid [356]
- [ INFO] [1499318590.218434440]: Finished loading Gazebo ROS API Plugin.
- [Msg] Waiting for master.
- [ INFO] [1499318590.220829714]: waitForService: Service [/gazebo/set_physics_properties] has not been advertised, waiting...
- [Msg] Connected to gazebo master @ http://127.0.0.1:11345
- [Msg] Publicized address: 172.17.0.2
- [Wrn] [ColladaLoader.cc:1804] Triangle input semantic: 'TEXCOORD' is currently not supported
- [Wrn] [ColladaLoader.cc:1804] Triangle input semantic: 'TEXCOORD' is currently not supported
- [Wrn] [ColladaLoader.cc:1804] Triangle input semantic: 'TEXCOORD' is currently not supported
- [Wrn] [ColladaLoader.cc:1804] Triangle input semantic: 'TEXCOORD' is currently not supported
- [Wrn] [ColladaLoader.cc:1804] Triangle input semantic: 'TEXCOORD' is currently not supported
- [spawn_urdf-10] process has finished cleanly
- log file: /root/.ros/log/31d9adfa-620b-11e7-a113-0242ac110002/spawn_urdf-10*.log
- [ INFO] [1499318597.020363774, 1341.708000000]: Camera Plugin: Using the 'robotNamespace' param: '/'
- [ INFO] [1499318597.029090560, 1341.708000000]: Camera Plugin (ns = /) <tf_prefix_>, set to ""
- [ WARN] [1499318597.051198614, 1341.708000000]: Range plugin missing <radiation>, defaults to ultrasound
- [ WARN] [1499318597.051501949, 1341.708000000]: Range plugin missing <fov>, defaults to 0.05
- [ INFO] [1499318597.051634287, 1341.708000000]: Range plugin missing <gaussianNoise>, defaults to 0.0
- [ INFO] [1499318597.051772773, 1341.708000000]: Range plugin missing <updateRate>, defaults to 0
- [ WARN] [1499318597.071652157, 1341.708000000]: Range plugin missing <radiation>, defaults to ultrasound
- [ WARN] [1499318597.071737149, 1341.708000000]: Range plugin missing <fov>, defaults to 0.05
- [ INFO] [1499318597.071765174, 1341.708000000]: Range plugin missing <gaussianNoise>, defaults to 0.0
- [ INFO] [1499318597.071788477, 1341.708000000]: Range plugin missing <updateRate>, defaults to 0
- [ WARN] [1499318597.074830942, 1341.708000000]: Range plugin missing <radiation>, defaults to ultrasound
- [ WARN] [1499318597.075126204, 1341.708000000]: Range plugin missing <fov>, defaults to 0.05
- [ INFO] [1499318597.075418562, 1341.708000000]: Range plugin missing <gaussianNoise>, defaults to 0.0
- [ INFO] [1499318597.075720639, 1341.708000000]: Range plugin missing <updateRate>, defaults to 0
- [ WARN] [1499318597.089499716, 1341.708000000]: Range plugin missing <radiation>, defaults to ultrasound
- [ WARN] [1499318597.090064739, 1341.708000000]: Range plugin missing <fov>, defaults to 0.05
- [ INFO] [1499318597.090382446, 1341.708000000]: Range plugin missing <gaussianNoise>, defaults to 0.0
- [ INFO] [1499318597.090626321, 1341.708000000]: Range plugin missing <updateRate>, defaults to 0
- [ INFO] [1499318603.934692266, 1341.708000000]: Block laser plugin missing <gaussianNoise>, defaults to 0.0
- [ INFO] [1499318603.934773061, 1341.708000000]: Block laser plugin missing <hokuyoMinIntensity>, defaults to 101
- [ INFO] [1499318603.934847668, 1341.708000000]: Block laser plugin missing <updateRate>, defaults to 0
- [ INFO] [1499318604.031684097, 1341.708000000]: Camera Plugin: Using the 'robotNamespace' param: '/'
- [ WARN] [1499318604.036142916, 1341.708000000]: Range plugin missing <radiation>, defaults to ultrasound
- [ WARN] [1499318604.036419387, 1341.708000000]: Range plugin missing <fov>, defaults to 0.05
- [ INFO] [1499318604.036500172, 1341.708000000]: Range plugin missing <gaussianNoise>, defaults to 0.0
- [ INFO] [1499318604.036576326, 1341.708000000]: Range plugin missing <updateRate>, defaults to 0
- [ INFO] [1499318604.048912318, 1341.708000000]: Camera Plugin (ns = /) <tf_prefix_>, set to ""
- [ INFO] [1499318604.601344650, 1341.708000000]: Laser Plugin: Using the 'robotNamespace' param: '/'
- [ INFO] [1499318604.602166296, 1341.708000000]: Starting Laser Plugin (ns = /)!
- [ INFO] [1499318604.609125255, 1341.708000000]: Laser Plugin (ns = /) <tf_prefix_>, set to ""
- [ WARN] [1499318604.622696602, 1341.708000000]: Range plugin missing <radiation>, defaults to ultrasound
- [ WARN] [1499318604.622786468, 1341.708000000]: Range plugin missing <fov>, defaults to 0.05
- [ INFO] [1499318604.622838959, 1341.708000000]: Range plugin missing <gaussianNoise>, defaults to 0.0
- [ INFO] [1499318604.622875155, 1341.708000000]: Range plugin missing <updateRate>, defaults to 0
- [ WARN] [1499318604.675410176, 1341.708000000]: Range plugin missing <radiation>, defaults to ultrasound
- [ WARN] [1499318604.675486412, 1341.708000000]: Range plugin missing <fov>, defaults to 0.05
- [ INFO] [1499318604.675527058, 1341.708000000]: Range plugin missing <gaussianNoise>, defaults to 0.0
- [ INFO] [1499318604.675556004, 1341.708000000]: Range plugin missing <updateRate>, defaults to 0
- [ INFO] [1499318605.145527632, 1341.708000000]: Laser Plugin: Using the 'robotNamespace' param: '/'
- [ INFO] [1499318605.145614241, 1341.708000000]: Starting Laser Plugin (ns = /)!
- [ INFO] [1499318605.154089749, 1341.708000000]: Laser Plugin (ns = /) <tf_prefix_>, set to ""
- [ WARN] [1499318605.158758063, 1341.708000000]: Range plugin missing <radiation>, defaults to ultrasound
- [ WARN] [1499318605.158840499, 1341.708000000]: Range plugin missing <fov>, defaults to 0.05
- [ INFO] [1499318605.158877742, 1341.708000000]: Range plugin missing <gaussianNoise>, defaults to 0.0
- [ INFO] [1499318605.158909882, 1341.708000000]: Range plugin missing <updateRate>, defaults to 0
- [ INFO] [1499318605.244331364, 1341.708000000]: Camera Plugin: Using the 'robotNamespace' param: '/'
- [ INFO] [1499318605.260901986, 1341.708000000]: Camera Plugin: Using the 'robotNamespace' param: '/'
- [ INFO] [1499318605.268178012, 1341.708000000]: Camera Plugin (ns = /) <tf_prefix_>, set to ""
- [ INFO] [1499318605.295667008, 1341.708000000]: Camera Plugin (ns = /) <tf_prefix_>, set to ""
- [Wrn] [PriusHybridPlugin.cc:361] PriusHybridPlugin loading params
- [ INFO] [1499318605.487444516, 1341.708000000]: GazeboRosJointStatePublisher is going to publish joint: rear_right_wheel_joint
- [ INFO] [1499318605.487560947, 1341.708000000]: GazeboRosJointStatePublisher is going to publish joint: rear_left_wheel_joint
- [ INFO] [1499318605.487821573, 1341.708000000]: GazeboRosJointStatePublisher is going to publish joint: front_right_wheel_joint
- [ INFO] [1499318605.487860817, 1341.708000000]: GazeboRosJointStatePublisher is going to publish joint: front_left_wheel_joint
- [ INFO] [1499318605.487897223, 1341.708000000]: GazeboRosJointStatePublisher is going to publish joint: front_right_steer_joint
- [ INFO] [1499318605.487938402, 1341.708000000]: GazeboRosJointStatePublisher is going to publish joint: front_left_steer_joint
- [ INFO] [1499318605.487983362, 1341.708000000]: GazeboRosJointStatePublisher is going to publish joint: steering_joint
- [ INFO] [1499318605.488209156, 1341.708000000]: Starting GazeboRosJointStatePublisher Plugin (ns = //)!, parent name: prius
- [ INFO] [1499318605.694392977, 1341.729000000]: waitForService: Service [/gazebo/set_physics_properties] is now available.
- [ INFO] [1499318605.875331513, 1341.751000000]: Physics dynamic reconfigure ready.
- [Wrn] [Publisher.cc:141] Queue limit reached for topic /gazebo/default/pose/local/info, deleting message. This warning is printed only once.
----
----詳細過程如下----
ROS / GAZEBO中的Prius演示
這是使用ROS kinetic釋出的感測器資料的 gazebo 8中的Prius的模擬。 通過釋出ROS訊息來控制汽車的節氣門,制動器,轉向和換檔。ROS節點允許使用遊戲手柄或操縱桿進行駕駛。
要求(基本)
該演示已經在Ubuntu Xenial(16.04)
推薦(選配)
- 一個操縱桿
- 建立到
/dev/input/js0
或的連結的操縱桿驅動程式/dev/input/js1
編譯
首先克隆repo,然後執行指令碼build_demo.bash
。它使用本地原始碼構建了一個docker映像。
$ cd car_demo
$ ./build_demo.bash
執行
將遊戲控制器連線到您的電腦。使用指令碼run_demo.bash
執行演示。
$ ./run_demo.bash
一個RVIZ視窗將開啟,顯示汽車和感測器輸出。將出現一個Gazebo視窗,顯示模擬。使用控制器驅動世界各地的prius,或者點選Gazebo視窗並使用WASD
鑰匙來駕駛汽車。
如果使用Logitech F710控制器:
- 確保MODE狀態指示燈熄滅
- 將swtich設定為XInput模式
- 右側杆控制油門和制動器
- 左鍵控制轉向
- Y把車放進DRIVE
- A把車放進REVERSE
- B把車放到中性
----
先看效果:
Gazebo:
參考網址:
----
智慧汽車模擬演示
由Tully Foote於2017年6月30日上午10:30編輯
我們很高興用ROS Kinetic和Gazebo 8展示Mcity的Prius模擬。ROS使用現有的軟體和庫可以更快地開發模擬。車輛的節氣門,制動器,轉向和變速器通過釋出到ROS主題進行控制。所有感測器資料都是使用ROS釋出的,可以使用RViz進行視覺化。
我們利用Gazebo 8的功能來整合現有的模型和感測器。模擬世界(環境)包含了一個新型的Mcity和交匯高速公路。還有來自Gazebo模型庫的模型,包括垃圾箱,交通錐和加油站。在車輛本身上,屋頂上有一個16束鐳射雷達,8個超聲波感測器,4個攝像頭和2個平面鐳射雷達。
模擬模擬是開源的,可以在osit / osdf / car_demo上的GitHub上獲得。通過安裝nvidia-docker並從Docker Hub拉出“osrf / car_demo”來嘗試。有關構建和執行的更多資訊,請參閱源儲存庫中的README。
----
NVIDIA Docker
該儲存庫包括構建和執行NVIDIA Docker映像的實用程式。
CUDA如何與Docker整合的示例
文件
快速開始
假設NVIDIA驅動程式和Docker已正確安裝(請參閱安裝)
Ubuntu發行版
#安裝nvidia-docker和nvidia-docker-plugin wget -P / tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker_1.0.1-1_amd64.deb sudo dpkg - i / tmp / nvidia-docker * .deb && rm / tmp / nvidia-docker * .deb#測試nvidia-smi nvidia-docker執行--rm nvidia / cuda nvidia-smi
----
先決條件
執行的先決條件列表nvidia-docker
如下所示。
有關如何為您的Linux發行版安裝Docker的資訊,請參閱Docker文件。
- GNU / Linux x86_64,核心版本> 3.10
- 多克爾> = 1.9(官方
docker-engine
,docker-ce
或docker-ee
僅) - NVIDIA GPU與架構>費米(2.1)
- NVIDIA驅動程式 > = 340.29與二進位制
nvidia-modprobe
您的驅動程式版本可能會限制您的CUDA功能(請參閱CUDA要求)
從二進位制包安裝
二進位制包可在發行頁面上下載。
軟體包安裝將自動設定nvidia-docker-plugin
並根據您的分發,將其註冊到init系統。
從源頭構建
在儲存庫問題的根目錄make
或make install
構建二進位制檔案。
稍後還將在由環境變數設定的位置prefix
(/usr/local
預設情況下)處理二進位制檔案。您必須nvidia-docker-plugin
手動啟動此方法:
sudo -b nohup nvidia-docker-plugin
或者,您可以為您的發行版使用make deb
或make rpm
生成deb / rpm軟體包。
軟體包安裝將自動設定nvidia-docker-plugin
並根據您的分發,將其註冊到init系統。
make clean
並make distclean
分別清理構建和分配環境。
----
需要注意,依據驅動型別和顯示卡型號選擇合適的CUDA版本:
runtime
:一個輕量級的影象,包含最低限度,部署使用CUDA的預構建應用程式。devel
:通過新增編譯器工具鏈,除錯工具和標準CUDA庫的開發檔案來擴充套件執行時映像。使用此映像從原始碼編譯CUDA應用程式。
要求
執行CUDA容器需要一臺具有至少一個支援CUDA功能的GPU和與您使用的CUDA工具包版本相容的驅動程式。
執行CUDA容器的機器只需要NVIDIA驅動程式,不需要安裝CUDA工具包。
NVIDIA驅動程式向後相容 CUDA工具包版本
CUDA工具包版本 | 驅動程式版本 | GPU架構 |
---|---|---|
6.5 | > = 340.29 | > = 2.0(費米) |
7 | > = 346.46 | > = 2.0(費米) |
7.5 | > = 352.39 | > = 2.0(費米) |
8 | = 361.93或> = 375.51 | == 6.0(P100) |
8 | > = 367.48 | > = 2.0(費米) |
例子
看一下樣本部分,找到編譯簡單CUDA應用程式的Dockerfiles示例。
#執行互動式CUDA會話隔離第一個GPU NV_GPU = 0 nvidia-docker執行-ti --rm nvidia / cuda#查詢CUDA 7.5編譯器版本 nvidia-docker執行--rm nvidia / cuda:7.5-devel nvcc --version
----
挑戰
安裝使用者級驅動程式庫和裝置檔案會破壞容器的環境,只有當容器執行GPU應用程式時才應該執行。這裡的挑戰是確定給定的影象是否將使用GPU。我們還應該防止基於與主機NVIDIA驅動程式版本不相容的Docker映像啟動容器,您可以在此wiki頁面上找到更多詳細資訊。
NVIDIA-泊塢窗
沒有通用的解決方案來檢測是否有任何影象將使用GPU程式碼。在nvidia-docker
我們假設基於我們的nvidia/cuda
影象(DockerHub上可用)的任何影象將是GPU應用程式,因此它們需要驅動程式卷和裝置檔案。
更具體地說,當nvidia-docker run
使用時,我們檢查在命令列上指定的影象。在此影象中,我們查詢標籤 的存在和值com.nvidia.volumes.needed
。nvidia/cuda
我們提供的影象開始時都包含這個標籤。所有執行此操作的Dockerfiles FROM nvidia/cuda
將自動繼承此元資料,從而可以無縫工作nvidia-docker
。
為了檢測影象與主機驅動程式不相容,我們依賴於第二個元資料com.nvidia.cuda.version
標籤。此標籤存在於每個CUDA基本影象中,並具有相應的版本號。該版本與驅動程式支援的最大CUDA版本進行比較,為此目的nvidia-docker
使用CUDA API函式cudaDriverGetVersion
。如果驅動程式對於執行此版本的CUDA來說太舊了,則在啟動容器之前會出現錯誤:
$ nvidia-docker run --rm nvidia/cuda
nvidia-docker | 2016/04/21 21:41:35 Error: unsupported CUDA version: driver 7.0 < image 7.5
備擇方案
在這種情況下,nvidia-docker
不會簡單地將引數注入docker
命令列。因此,重現這種行為更復雜。您將需要檢查工作流中的影象或容器編排解決方案中的影象。檢視影象中的標籤很簡單:
$ docker inspect -f '{{index .Config.Labels "com.nvidia.volumes.needed"}}' nvidia/cuda
nvidia_driver
$ docker inspect -f '{{index .Config.Labels "com.nvidia.cuda.version"}}' nvidia/cuda
7.5
如果您構建自己的自定義CUDA映像,建議您為相容性原因重用相同的標籤。
相關推薦
這玩意能靠譜才怪。在ROS Kinetic和Gazebo 8中使用智慧汽車模擬演示
在ROS Kinetic和Gazebo 8中使用智慧汽車模擬演示 智慧車無人駕駛技術是目前人工智慧和機器人技術的研究熱點,有許多開源平臺可以使我們。本文分享一下目前ROS官網最新推薦的一款開源汽車模擬模擬。使用的平臺為Ubuntu 16.04 + ROS Kinetic
做了8年電商 我發現這6種靠譜的電商運營管理思維
運營經歷過PC互聯網到移動互聯網,見證過B2C的興衰起落,操盤過淘寶京東,體驗了移動電商,帶過80後、90後甚至70後,我發現人與人之間真是有差異的,有人做電商2年從專員升級到主管經理,有人還一直奮鬥在專員。做電商的同學都知道,只要認真做1年的電商運營,像商品、活動、策劃、溝通和協調這些技術能力,都基本學會了
centos7 u盤安裝遇到的坑以及靠譜解決方法。
首先在官網下載centos7的iso檔案,大約4個G,然後推薦使用ultra ISO軟體來製作U盤啟動盤,主要是用ISO軟體開啟映象檔案,然後選擇製作硬碟啟動,選擇u盤,直接next就行,大約14min就OK。一個centos7的U盤啟動製作完畢。 接下來就是u盤安裝系統的過程,插入U盤,F12鍵
我lemonoil又回來了。。才怪。。
eiπ+1=0eiπ+1=0 E=mc2E=mc2 Ψ(x,t)=ψ0e−iEt−p⃗ ⋅x⃗ ℏΨ(x,t)=ψ0e−iEt−p→⋅x→ℏ H^Ψ=iℏ∂Ψ∂tH^Ψ=iℏ∂Ψ∂t ΔxΔ
找一家靠譜的雲桌面廠家其實並沒有想象中的那麼難
首先明確需求:明確自身的需求很重要,在部署雲桌面前我們首先要明確自身的使用需求,知道自己是屬於普通辦公應用還是屬於複雜辦公應用和3D設計應用的,是否需要播放高清視訊,以及有多少個使用者使用,是前期只在一個部門先試點實行後期在全面推广部署的等一些需求都需要提前明確的。 其次找廠家:明確需求後這裡就該說到如
一個人靠不靠譜,就看這三點: 凡事有交代,件件有著落,事事有迴音
一個人靠不靠譜,其實就看這三點: “凡事有交代,件件有著落,事事有迴音。” 有些人就是這樣,他跟你說“好”,你不會覺得他是在敷衍你。 我回憶起當年一位我特別喜歡且令人尊敬的老師。 他教的班級很多,但是他記得每一個人的名字。無論我什麼時候跟他討教問題,即使當時他忙不過來,但不管多久也總
很多人在Google Play商店購買或下載APP時出現問題,例如在你新安裝的系統恢復APP或想要安裝心願單中的APP時,Play商店出現不能載入等錯誤,這實在是太煩人了。 所以,我通過搜尋,把可
error 491 問題說明: downloads and updates impossible. (不能下載或更新) 解決方案: 進入您的裝置設定,刪除Google賬戶的所有內容。重啟您的Android裝置並重新新增G
搭建大中型公司的無線辦公網路,這樣搞才靠譜!
沒有實踐就沒有發言權,以我這個IT老司機多年的經驗判斷,Wi-Fi體驗不佳離不開以下三個方面的問題。 【遠端關聯示意圖】 首先,無線辦公網中存在著大量“遠端關聯”的情況。通俗來講,就是使用者裝置選擇AP時的“捨近求遠”。造成這一問題的場景有多種,比如:AP功率不對等、障礙物阻擋訊號,以及干擾影響訊號質量等
7個月時間“從零到億”,社交電商靠譜好物為何總能佔據行業“C位”?
文|曾響鈴 來源|科技向令說(xiangling0815) 伴隨著移動互聯經濟的發展,電商行業的形態正在不斷躍遷,市場的競爭也愈發的激烈,在這樣的背景下,也孕育出了像靠譜好物、拼多多、雲集微店等巨頭社交電商平臺,值得一提的是,其中的靠譜好物通過自身強
猴子都能看懂的PBR(才怪)
也不知道怎麼搞的,PBR(Physicallly-Based-Rendering 基於物理渲染)突然成了一個……你會了就好像什麼都會,不會就好像什麼都不會的標尺了…… 嘛,其實PBR也和其他渲染技術類似,雖然是比GPUSkinMesh之類“單純”的技術要複雜,但也未
一直覺得微博抽獎不靠譜, 這回可是讓IG.WXZ給搞到了
本文轉載自: https://blog.csdn.net/csdnnews/article/details/84038857 iG奪冠了!iG奪冠了!——11月3日,
隨手記怎麼樣靠譜嗎?近日隨手科技當選中國網際網路金融協會常務理事單位。
隨手記怎麼樣靠譜嗎?近日,根據《中國網際網路金融協會章程》,經協會第一屆理事會第三次會議審議,隨手集團旗下隨手科技正式當選為中國網際網路金融協會常務理事單位。 (理事單位會員證書) 中國網際網路金融協會是按照2015年7月18日經黨中央、國務院同意,由人民銀行、銀監會、證監會、保監會、工信
“試一試”不靠譜,美團點評不能永遠走在“試錯”的路上
美團有點煩,這邊股價跌跌不休,那邊又爆出裁員傳聞。 美團點評有點煩 近幾個月來,關於美團"缺錢"、"鉅額虧損"、"估值遇冷"、"騰訊流量紅利消失"等報道層出不窮。 近日,更有社交媒體爆出美團將進行裁員。據爆料者稱,美團App之前裁了一 個首頁的產品團隊100多人,以及大眾點評APP 20
看完這幾張圖,才知道高手怎麼玩。使用者畫像、精準營銷不是事兒!
零售業強烈的需求就是理解客戶,他們希望向客戶提供差異化服務,通過從網上收集社交資訊,更深入的理解某類商品的營銷模式,通過交易資料與互動資料的完美結合,為業務挑戰提供解決方案。 超市如何佈局 超市一直在監控客戶的店內走動情況以及與商品的互動,但這個監控僅僅是為了防盜嗎?他們將
hibernate4 和 spring3 整合注意事項:HibernateDaoSupport沒有了找到篇好文章,我之前遇到的問題都在這都能找到。其實出現這些問題的關鍵就是hibernate4和hib
Hibernate4的改動較大隻有spring3.1以上版本能夠支援,Spring3.1取消了HibernateTemplate,因為Hibernate4的事務管理已經很好了,不用Spring再擴充套件了。這裡簡單介紹了hibernate4相對於hibernate3配置時
鋤禾日當午,啥都不靠譜。閒來沒事做,不如寫部落格。
由於最近迷上了嗶哩嗶哩的直播,人窮沒錢買瓜子,據說這個js能識別語音,和圖片,剛好領取瓜子需要做一道數學題,又於是激動準備著手自己搞個外掛自動領瓜子,哇咔咔咔~~~廢話不說,表示尊重, 上git:https://github.com/naptha/tessera
批量郵箱註冊申請,郵箱註冊申請這樣才靠譜!
jpg src .com 特點 產品 alt 入門級 過程 郵件群發 我們進行批量郵箱註冊過程中,在性價比這方面時而不知如何選擇,今天來為大家分析,批量註冊的時,各郵箱品牌性價比有哪些特點? 了解郵箱基本信息: 郵箱品牌信息 目前五大郵箱品牌如TOM郵箱、搜狐、新浪、網易、
《演算法筆記》10. 並查集、圖相關演算法、看完這篇不能再說不會了。
[TOC] # 1 並查集、圖相關演算法 > 轉載註明出處,原始碼地址: https://github.com/Dairongpeng/algorithm-note ,歡迎star ## 1.1 並查集 ### 1.1.1 並查集基本結構和操作 1、有若干個樣本a、b、c、d...型別假設是V
這玩意比ThreadLocal叼多了,嚇得why哥趕緊分享出來。
這是why哥的第 70 篇原創文章 # 從Dubbo的一次提交開始 故事得從前段時間翻閱 Dubbo 原始碼時,看到的一段程式碼講起。 這段程式碼就是這個: `org.apache.dubbo.rpc.RpcContext` ![](https://img2020.cnblogs.com/b
深圳搬家公司哪家靠譜
這也 分享 png 行業 制度 發展 一個 image 放心 現在一提起搬家大